2009-12-21 3 views
14

Я пытаюсь выяснить, какую ориентацию имеет iphone в симуляторе, и вместо того, чтобы давать его мне, используя свойство ориентации UIDevice, я просто получаю UIDeviceOrientationUnknown.UIDeviceOrientationUnknown в ландшафтном режиме

Это свойство не работает в симуляторе? Какая может быть причина этого?

Я использую OpenGL ES

+0

Это ошибка? –

ответ

12

первую очередь, из документации о orientation свойство UIDevice экземпляра

Значение этого свойства всегда возвращает 0, если уведомления ориентации не были включены по телефону beginGeneratingDeviceOrientationNotifications.

и да, он будет работать только на реальном устройстве. но вы можете использовать, например, this акселерометр.

+0

Извините, но нет, это не работает только на реальном устройстве. Я просто запустил ориентацию ландшафтного устройства на симуляторе, а затем на портретный. Возможно, это было не так с предыдущими версиями SDK ... (я на 3.1.3) Я думаю, мы можем использовать [UIApplication statusBarOrientation] для определения текущей ориентации интерфейса (за исключением случаев, когда мы вручную изменяем ориентацию строки состояния). И я не уверен, что это будет работать со скрытой панелью состояния. – Unfalkster

+0

не работает также на iPad с 4.2.1 – SpaceDog

+1

Это работает на симуляторе, только не все время. Используйте [[UIApplication sharedApplication] statusBarOrientation], как указано в ответе ниже. –

44

Вы также можете использовать:

UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; 

, который работает даже без вызова beginGeneratingDeviceOrientationNotifications.

+0

приятно, что он работает и просто спас меня от головных болей =) – Dave

+0

лучшее решение. Я обнаружил, что проблема возникла в iOS 6 и новом iPad. Ваши советы решили мою проблему. Большое спасибо –

+2

Glad iOS имеет эту альтернативу! – RyJ

Смежные вопросы