Как контролировать ориентацию устройства в iphone / ipod? - PullRequest
1 голос
/ 15 июля 2009

Я должен что-то делать при вращении устройства в портретном режиме, но когда я использую

(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    //[[[UIApplication sharedApplication]keyWindow]subviews removeFromSuperview ];
  // return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
    return YES;
}

следующий код, и он отлично работает на симуляторе, но когда я использую его для установки кода на устройстве, это делает устройство настолько чувствительным, что если я просто немного изменю положение на устройстве, он выполнит этот код и перейдет к посмотреть, что я показываю на повороте телефона чем, пожалуйста, кто-нибудь скажет мне, что как я могу контролировать чувствительность устройства, я имею в виду, что я просто хочу, когда пользователь завершит поворот на 90 'в позиции, чем мой код должен выполнить, но он просто выполняется, если просто встряхнуть телефон в той же позиции.

спасибо за любую помощь

Balraj verma

Ответы [ 2 ]

1 голос
/ 15 июля 2009

Вы, вероятно, хотите буферизовать информацию об ориентации; то есть, изменяйте ориентацию только после того, как вы получили несколько указаний от датчика подряд о том, что ориентация отличается от того, что вы в данный момент отображаете.

0 голосов
/ 12 августа 2009

Насколько я понимаю, что вы написали, ваше приложение слишком чувствительно, когда устройство поворачивается? Трудно понять, почему это так; код, который вы включили, утверждает, что ваше приложение готово принять любую ротацию, но вы не указали, как вы будете обращаться с событиями ротации впоследствии.

Основываясь на информации, я могу только предложить, чтобы вы добавили проверку в свой код (возможно, где происходит событие поворота) и получили ориентацию с устройства, используя:

[[UIDevice currentDevice] orientation];

, который будет возвращать перечисление UIInterfaceOrientation, указывающее текущую ориентацию устройства.

UIDeviceOrientationPortrait
UIDeviceOrientationPortraitUpsideDown
UIDeviceOrientationLandscapeLeft
UIDeviceOrientationLandscapeRight

Затем вы можете использовать это, чтобы определить, нужно ли менять ориентацию. (Примечание: это iPhone OS 2.0. Я считаю, что OS 3.0 имеет больше возможностей, в том числе лежа наверху / вниз и т. Д.)

- (void) didRotate:(NSNotification *)notification
{   
   UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

   if (orientation == UIDeviceOrientationLandscapeRight)
   {
       NSLog(@"Landscape Right!");
   }
}

Если вы обнаружите, что ориентация переключается слишком быстро, возможно, вы захотите буферизовать информацию, создав несколько точек выборки, которые вы можете сравнить перед переключением на новую ориентацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...