UINavigationController Force Rotate

Мое приложение в основном портретное, однако есть одно представление, которое ТРЕБУЕТ альбомную ориентацию.

Мои представления содержатся в UINavigationController, который (очевидно) является причиной этой проблемы.

Все UIViewController, кроме одного, имеют это:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

UIViewController, который требует альбомной ориентации, имеет следующее:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

Теперь, что происходит, когда пользователь достигает ландшафтного UIViewController, он отображается в портретной ориентации. Затем пользователь может повернуть свой телефон, и он отобразится в альбомной ориентации, как я хочу (блокировка в альбомной ориентации). Затем пользователь переходит к портретному UIViewController, и происходит то же самое: он начинается в альбомной ориентации, затем они поворачивают свой телефон, и он снова становится портретным (и фиксируется в портретном).

Кажется, между UIViewControllers разрешена блокировка ориентации, однако автоповорот/программное изменение ориентации каким-то образом заблокированы.

Как заставить телефон обновиться до правильной ориентации?

Есть временное решение: я могу определить ориентацию устройства и показать сообщение с просьбой повернуть устройство, если оно неправильное, однако это не оптимально.

18
задан Zac Altman 22 March 2012 в 16:55
поделиться