Проблемы с ориентацией интерфейса и UITabBarController - PullRequest
2 голосов
/ 06 августа 2010

Быстрая проблема:

У меня есть UITabBarController с 2 навигационными контроллерами [позволяет называть их левый и правый контроллер]

На выбранном по умолчанию левом контроллере я могу нажать новый View Controller, который обнаруживаеториентация интерфейса.

На правом контроллере я могу нажать тот же View Controller, но он не будет определять ориентацию интерфейса, или, в этом отношении, он даже не перейдет в метод shouldAutoRotateInterface вообще T ___ T

Haaalp !!

Если это имеет какое-либо отношение, то View Contoller, который я нажимаю, использует свойство hidesBottomBarWhenPhed.

Ответы [ 3 ]

13 голосов
/ 29 сентября 2010

Скорее всего это ваша проблема:

Контроллеры панели вкладок поддерживают портрет ориентация по умолчанию и не повернуть в альбомную ориентацию , если все корневые контроллеры представления не поддерживают такую ​​ориентацию . Когда ориентация устройства происходит изменение контроллера панели вкладок запрашивает свой массив контроллеров представления. Если кто-то из них не поддерживает ориентация, панель вкладок контроллер не меняет своего ориентации.

Решение состоит в том, чтобы переопределить следующий метод на каждом контроллере представления, ведущем к вашему представлению:

- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation {
    return YES;
}

Например, вместо использования по умолчанию UITabBarController в IB, замените его собственным подклассом, содержащим только метод выше.

8 голосов
/ 25 февраля 2011

Я немного опоздал на вечеринку по этому поводу, но у меня возникла проблема с автоповоротом при запуске приложения с панелью вкладок, которое я всегда хотел запустить в портретном режиме.

В списке приложений есть необходимые настройки, чтобы запускать и разрешать только портретный режим, а все мои контроллеры просмотра поддерживают только портретный режим. Тем не менее, когда я запустил приложение с iPhone в альбомной ориентации, приложение запустилось в портретной ориентации, но затем повернулось в альбомную ориентацию!

Вместо подкласса UITabBarController я просто переопределил метод UITabBarController shouldAutorotateToInterfaceOrientation:, используя категорию в классе UITabBarController. Я включил этот код в мой делегат приложения:

@implementation UITabBarController(UITabBarControllerCategory)

-(BOOL)shouldAutorotateToInterfaceOrientation:
                 (UIInterfaceOrientation)toInterfaceOrientation
{
    return (toInterfaceOrientation == UIInterfaceOrientationPortrait);
}

@end

Прекрасно работает и довольно легкий.

0 голосов
/ 06 августа 2010

Ваш uitabbarcontroller реализует автоповорот? любой дочерний viewcontroller, который хочет внедрить функцию автоматического поворота, должен иметь родительское средство автоматического выполнения.

...