Я пытаюсь получить приложение для iPhone, для которого требуется почти каждое нажатие или щелчок в стеке Nav Controller для изменения ориентации.
По сути, первый вид - это портрет, второй - третий портрет (да, я знаю, что это не идеально, но это дизайн, и я должен его реализовать).
Здесь я получил несколько советов ....
Как обнаружить вращение на iPhone без автоповорота устройства?
Принудительная книжная ориентация при отправке нового вида в UINavigationViewController
Есть ли документированный способ установки ориентации iPhone?
Но без полного успеха.
Настройка для связи с 3.1.2 мое чтение связанных статей выше, кажется, указывает на то, что, если мой портретный вид выдвигает вид с
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return ((interfaceOrientation == UIInterfaceOrientationLandscapeRight) );
}
Затем этот вид должен появиться повернутым в ландшафт. То, что происходит, это появляется в его «сломанной» портретной форме, затем вращается правильно, когда устройство повернуто.
Если я верну контроллер обратно в мое портретное представление (которое имеет соответствующий флажок «Автоматически вращать ...»), оно останется в режиме ломаной ориентации, пока устройство не вернется в портретную ориентацию.
Я также попытался удалить все сообщения mustautorotate и вместо этого принудительно вращать, трансформируя представление. Это работает, и я понял, что, перемещая строку состояния (которая фактически скрыта в моем приложении) [UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeRight;
, клавиатура будет отображаться с правильной ориентацией, когда это необходимо.
Проблема с этим подходом заключается в том, что преобразование строки состояния выглядит странно и безобразно, когда у вас нет строки состояния - тень появляется на странице при каждом изменении.
Итак. Чего мне не хватает
1) Я ошибаюсь, полагая, что в 3.1.2 (или, возможно, раньше) долженAutorotateToInterfaceOrientation обеспечивать желаемую ориентацию простым нажатием на контроллеры?
2) Есть ли другой способ заставить клавиатуры отображаться в правильной ориентации.
3) Является ли недокументированный API "подходящим" (пожалуйста, нет!)