[Вопрос обновлен]
Итак, вот проблема, я, наконец, сузил ее до этого. Если вы создаете новый UIViewController во всех методах
- (id)init;
- (void)loadView;
- (void)viewDidAppear:(BOOL)animated;
- (void)viewDidLoad;
(...)
, стандартным interfaceOrientation является Portrait, и если обнаружен альбомный режим, он быстро повернется в эту ориентацию. Что затем может быть обнаружено с помощью:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation;
Проблема в том, что на iPad довольно сложно подготовить ваш интерфейс для текущей ориентации интерфейса в loadView (или одном из других), поскольку он вернет только портрет. Это вызовет несколько проблем:
1) Я хочу, чтобы мой контент перезагружался в режиме portait, но НЕ в альбомном режиме. Обычно я помещаю оператор if в loadView. Если в портретном режиме, перезагрузите контент. Но в этом случае он всегда будет возвращать портрет и, следовательно, всегда загружает контент.
2) Я хочу использовать ' PresentPopoverFromRect: inView: allowedArrowDirections: animated: '- метод в портретном режиме, поэтому он автоматически отображает всплывающее меню при запуске приложения. Это приведет к сбою приложения при запуске в портретном режиме. Причина: «Всплывающие окна не могут быть представлены из представления, в котором нет окна».
Единственное безопасное предположение находится в пределах «didRotateFromInterfaceOrientation: (UIInterfaceOrientation) fromInterfaceOrientation», но этот метод не будет запущен, если он запускается в портретном режиме .
// ----
Обновление (15.37)
'UIApplicationWillChangeStatusBarOrientationNotification'
Будет опубликовано только тогда, когда пользователь переключается с книжной на альбомную (или наоборот). Если интерфейс был проблемой, то это можно легко решить, наблюдая за этим уведомлением и
if (UIDeviceOrientationIsPortrait(interfaceOrientation)) {
// layout subviews for portrait mode
} else {
// layout subviews for landscape mode
}
Но проблема в том, что я хочу знать, в каком режиме он находится при запуске, чтобы определить, следует ли перезагружать контент, я могу ' t перезагрузить контент, и когда он поменяется на альбомный, отменить его.