У меня довольно интересная (но очень раздражающая) проблема с (не только) авторотацией пользовательского интерфейса. Я работаю над приложением, которое содержит контроллер вкладок с парой контроллеров навигации в качестве элементов вкладок. Один из этих контроллеров позволяет осуществлять автоматический переход в ландшафтный режим.
Интересно, что он отлично работает в симуляторе и на моем собственном устройстве, но не работает на других тестовых устройствах. Все устройства одинаковы - iPhone 3G 16 ГБ, версия ОС 3.1.3.
Когда я ищу сообщения журнала, которые сообщают о событиях изменения ориентации в консоли, я могу найти его снова только на моем устройстве, но не на других устройствах, поэтому кажется, что другие устройства вообще не сообщают об изменении ориентации. С другой стороны, это маловероятно, потому что другие приложения работают нормально ... Также некоторые другие функции, которые работают на моем телефоне, не работают и на других устройствах (например, обработка событий касания в табличном представлении).
Я никогда не видел ничего подобного и не могу найти причину, почему, черт возьми, это не должно работать на всех устройствах одинаково! Так что вопрос - я сумасшедший или как?
Я использую подкласс UITabBarViewController с переопределенным методом
- (BOOL) shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) toInterfaceOrientation {
BOOL shouldRotate = (toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft);
NSLog(@"Should rotate: %d", shouldRotate);
return shouldRotate;
}
Затем я обрабатываю анимацию изменения ориентации в соответствующих методах (willRotate ..., willAnimateRotation ...). Но, как я уже сказал, он отлично работает на моем устройстве, но на других устройствах метод shouldAutorotateToInterfaceOrientation: никогда не вызывается. Weird!
Пожалуйста, дайте мне подсказку, прежде чем я закончу в сумасшедшем доме. Спасибо за любой совет.