UIDevice currentDevice "ориентация" всегда нулевая - PullRequest
8 голосов
/ 17 марта 2010

согласно названию. Вызов [[UIDevice currentDevice] BeginGeneratingDeviceOrientationNotifications] не имеет никакого эффекта.

События DidRotateToInterfaceOrientation и т. Д. Работают нормально, но мне нужно иметь возможность произвольно опрашивать ориентацию устройства.

Как я могу это исправить / сделать?

Длинная история: У меня есть вкладка приложения с контроллером навигации на каждой вкладке. Корневой вид вкладки номер один - это график, который переходит в полноэкранный режим, когда ориентация меняется на альбомную; однако это необходимо проверять всякий раз, когда вид появляется, поскольку изменение ориентации могло произойти в другом месте, поэтому я надеялся опрашивать состояние ориентации всякий раз, когда появляется этот вид.

Ответы [ 5 ]

9 голосов
/ 14 августа 2010

Представление UIDevice об ориентации, по-видимому, доступно только на реальных устройствах. Симулятор, кажется, всегда возвращает 0 здесь, независимо от того, были ли включены уведомления, как предполагают документы. Раздражающе неудобно, но вы идете.

Я считаю, что это нормально работает на реальном устройстве:

    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
    NSLog(@"orientation: %d", [[UIDevice currentDevice] orientation]);
    [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];
2 голосов
/ 02 августа 2010

кажется глупым вопросом, но не так ли

beginGeneratingDeviceOrientationNotifications

(нижний регистр b) ...

1 голос
/ 13 августа 2013

Это, как сказал iMeMyself в комментариях выше, - это много времени и я думаю, что это правильный ответ, поэтому я хотел бы выделить его здесь:

UIDeviceOrientation interfaceOrientation = [UIApplication sharedApplication].statusBarOrientation;

if (UIInterfaceOrientationIsLandscape(interfaceOrientation))
{
   //do stuff here
}
else if (UIInterfaceOrientationIsPortrait(interfaceOrientation))
{
//or do stuff here
}
1 голос
/ 12 ноября 2012

Если вы отметите [[UIDevice currentDevice] orientation] в - (void)viewDidLoad, вы всегда получите ноль.

Отметьте это *- (void) viewDidAppear:(BOOL)* анимированным методом и вы

0 голосов
/ 22 мая 2010

Разве [[UIDevice currentDevice] ориентация] не даст вам текущее состояние ориентации? Вы можете проверить это в вашем методе viewWillAppear контроллера представления, который хочет опросить.

Редактировать: кроме этого, существуют различные способы получения текущей ориентации, такие как использование свойства statusBarOrientation в UIApplication или свойства interfaceOrientation в UIViewcontroller.

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