currentDevice's UIDevice “ориентация” всегда пустой указатель

Согласно заголовку. При вызове [[UIDevice currentDevice] BeginGeneratingDeviceOrientationNotifications] не имеет никакого эффекта.

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

Как я могу фиксировать / это?

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

8
задан Ben Zotto 10 February 2012 в 02:35
поделиться

3 ответа

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

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

0
ответ дан 5 December 2019 в 12:57
поделиться

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

beginGeneratingDeviceOrientationNotifications

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

2
ответ дан 5 December 2019 в 12:57
поделиться

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

На реальном устройстве это работает нормально:

    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
    NSLog(@"orientation: %d", [[UIDevice currentDevice] orientation]);
    [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];
9
ответ дан 5 December 2019 в 12:57
поделиться