Мое приложение - в основном портрет, однако есть одно представление, которое ТРЕБУЕТ ландшафтной ориентации.
Мои представления содержатся в UINavigationController, который (по-видимому) является причиной этой проблемы.
Все UIViewControllers, кроме одного, имеют следующее:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
UIViewController, который требует Landscape, имеет следующее:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
Теперь, когда пользователь достигает ландшафта UIViewController, он отображается в портрете. Затем пользователь может поворачивать свой телефон, и он отображается в ландшафте, так как я хочу его (блокировка для пейзажа). Затем пользователь переходит к портрету UIViewController, и это происходит: он начинается с пейзажа, затем они поворачивают свой телефон и снова становятся портретами (и блокируются для портрета).
Кажется, блокировка ориентации запрещена между UIViewControllers, однако автоматическое вращение/программное изменение ориентации каким-то образом заблокировано.
Как заставить телефон обновляться до правильной ориентации?
Существует временное решение: я могу определить ориентацию устройства и показать сообщение с просьбой повернуть устройство, если оно неверно, однако это не оптимально.