Мое приложение в основном портретное, однако есть одно представление, которое ТРЕБУЕТ альбомную ориентацию.
Мои представления содержатся в 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 разрешена блокировка ориентации, однако автоповорот/программное изменение ориентации каким-то образом заблокированы.
Как заставить телефон обновиться до правильной ориентации?
Есть временное решение: я могу определить ориентацию устройства и показать сообщение с просьбой повернуть устройство, если оно неправильное, однако это не оптимально.