У меня есть приложение для iPad, которое работает правильно, за исключением странной проблемы при запуске. Я прочитал несколько вопросов и ответов, касающихся ориентации, но это все равно поставило меня в тупик.
Контроллер корневого представления представляет собой UITabBarController с 3 вкладками. Две вкладки имеют настраиваемые контроллеры представления (одна основана на UIViewController, другая - на UITableViewController), и обе страдают от этой проблемы ориентации запуска. Третья вкладка - это пользовательский UITableViewController, который встроен в UINavigationController.
Хорошо, вот проблема. Если я запускаю приложение в книжной ориентации, все отлично работает. Если я начну в альбомной ориентации, 3-я вкладка работает отлично. Однако первые 2 вкладки отображаются в книжной ориентации, хотя:
- Ориентация строки состояния правильно отображается в виде пейзажа (разбросано по экрану).
- Вид панели вкладок корректно отображается в виде пейзажа с центрированием вкладок.
- Все представления возвращают YES для shouldAutorotateToInterfaceOrientation для всех ориентаций.
Если я вызываю [self interfaceOrientation] или [[UIApplication sharedApplication] statusBarOrientation] в viewWillAppear контроллера представления, то контроллер представления 3-ей вкладки сообщает 3 (альбомная ориентация), но первые два контроллера представления отображают 1 (портрет), даже если статус Бар явно пейзаж!
Если я поверну iPad в книжную ориентацию и вернусь в альбомную ориентацию, то все 3 вкладки повернутся правильно (и приведенные выше методы вернут 3, как и ожидалось).
Кроме того, если я коснусь любой другой вкладки, а затем вернусь на вкладку № 1 или № 2, они теперь будут вращаться правильно, даже без вращения самого iPad!
Чего мне не хватает?