Я - strugging с получением приложения для iPhone, которое требует примерно, чтобы каждое нажатие или поп в Военно-морской Стопке Контроллера изменили ориентацию.
В основном первое представление является портретом, вторая среда третий портрет снова (Да, я знаю, что это - меньше, чем идеал, но это - дизайн, и я должен реализовать его).
Я был через различный совет относительно здесь....
Как я обнаруживаю вращение на iPhone без самовращающегося устройства?
Вызовите портретную ориентацию при продвижении нового представления к UINavigationViewController
Существует ли зарегистрированный способ установить ориентацию iPhone?
Но без общего успеха.
Установка для соединения против 3.1.2 моих чтений связанных статей выше, кажется, указывает на это, если мое представление портрета продвигает представление с
Затем затем то представление должно казаться повернутым для озеленения. То, что происходит, это появляется в своей "поврежденной" форме портрета, затем вращается правильно, поскольку устройство превращено.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return ((interfaceOrientation == UIInterfaceOrientationLandscapeRight) );
}
Если я выталкиваю контроллер назад к моему представлению портрета (который имеет соответствующий shouldAutoRotate...), затем, это остается в поврежденном альбомном представлении, пока устройство не возвращается к портретной ориентации.
Я также попытался удалить все сообщения shouldautorotate и вместо этого вызвать вращение путем преобразования представления. Этот вид работ, и я выяснил, что путем перемещения строки состояния (который на самом деле скрыт в моем приложении), [UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeRight;
клавиатура появится с корректной ориентацией при желании.
Проблема с этим подходом состоит в том, что преобразование строки состояния является странным и ужасным, когда у Вас нет строки состояния - тень нависает над страницей с каждым изменением.
Так. Что я пропускаю.
1) Я нахожусь неправильно в размышлении, что в 3.1.2 (или возможно ранее) shouldAutorotateToInterfaceOrientation должен обеспечить желаемую ориентацию просто путем продвижения контроллеров?
2) Есть ли другой способ заставить клавиатуры появляться в корректной ориентации.
3) Недокументированные вызовы API способ пойти (нет!)
Вы не должны использовать [UIViewController shouldAutorotateToInterfaceOrientation:]
для изменения ориентации; он нужен только для того, чтобы система знала, разрешено ли автоматическое вращение. Вы все равно должны обновить его, чтобы указать разрешенную ориентацию.
Если вы хотите изменить ориентацию при отображении определенного вида, вы должны вызвать [UIApplication setStatusBarOrientation: animated:]
внутри вашего [UIViewController viewWillAppear:]
метод переопределения для каждого контроллеров представления, которые заставляют определенную ориентацию. Это вызовет изменение, когда представление помещается в стек и когда оно выталкивается из него. Убедитесь, что вы вызываете super
в своем методе переопределения.
Это также подходящее место для изменения способа отображения строки состояния, если вы этим занимаетесь.