Проблема. Я получаю очень странную ошибку в своем приложении. У меня есть UITabBarController с несколькими контроллерами представлений для вкладок. В контроллерах представления я реализовал авторотацию через shouldAutorotateToInterfaceOrientation:
, и он работал нормально, пока не сделал следующее изменение.Авторотация отключена после установки selectedIndex свойство UITabBarControllers (ошибка SDK?)
Я реализовал жесты пальцев в контроллерах вида для изменения между вкладками. Это достигается с помощью следующего кода.
- (void)onSwipeLeft {
int _count = [[self.tabBarController.tabBar items] count];
int i = self.view.tag - 1;
if (i < _count - 1) {
self.tabBarController.selectedIndex = (i + 1) % _count;
}
}
И аналогично для onSwipeRight
.
Теперь авторотация работает только , пока вы не проведите пальцем влево или вправо. После этого shouldAutorotateToInterfaceOrientation:
никогда не вызывается вообще.
См. Также.
В this thread идентичная проблема описана. Я также иногда вижу сообщение в журнале:
-[UIWindow beginDisablingInterfaceAutorotation] overflow on <UIWindow: 0x1410e0; frame = (0 0; 320 480); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x141190>>. Ignoring.
Я не могу найти другую информацию об этом.This question, похоже, описывает ту же проблему.
This question, похоже, описывает аналогичную проблему, но с
popViewController:
. Обратите внимание, что ошибка была там с SDK 3.2.
Что делать? Кажется, что ошибка в SDK, которая все еще присутствует в 4.1. Кто-нибудь нашел обходное решение? Это похоже на общий сценарий.
ли ваша UITabViewController соответствует автоматического поворота? поскольку он является родителем других представлений, он также должен допускать поворот. –
Я пробовал подклассифицировать UITabViewController и возвращать 'YES' в' shouldAutorotateToInterfaceOrientation: ', но это не помогло. –