Вопрос

Я борюсь с получением приложения для iPhone, которое требует практически в каждом толчке или поп-сигналах в стеке контроллера NAV для изменения ориентации.

В основном первым представление является портретом, второй ландшафт третий портрет снова (да, я знаю, что это меньше, чем идеал, но это дизайн, и я должен его реализовать).

Я был через различные советы здесь ....
Как я могу обнаружить вращение на iPhone без автомотации устройства?
Сила портретная ориентация на толкание нового представления к UinavigateViewController
Есть ли документированный способ установить ориентацию iPhone?
Но без общего успеха.

Настройка ссылки против 3.1.2 Мое чтение связанных статей выше, кажется, указывает на то, что если мой портрет представления толкает вид с

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return ((interfaceOrientation == UIInterfaceOrientationLandscapeRight) );
}
Тогда этот взгляд должен появиться повернутым к ландшафту. Что произойдет, это появляется в его «сломанной» портретной форме, затем вращается правильно, поскольку устройство перевернуто.

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

Я также попытался удалить все сообщения на колесах, а вместо этого заставляю вращение, преобразовав вид. Этот вид работ, и я понял, что, переместив строку состояния (который на самом деле скрыт в моем приложении) [UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeRight; Клавиатура появится с правильной ориентацией при желании.

Проблема с таким подходом состоит в том, что преобразование строки состояния является странным и уродливым, когда у вас нет строки состояния - тень оксида на странице с каждым изменением.

Так. Что мне не хватает.

1) Я ошибаюсь в том, как мы думаем, что в 3.1.2 (или, возможно, более ранней)) должен обеспечить необходимую ориентацию, просто подталкивающую контроллеры?

2) Есть ли другой способ получения клавиатур в правильной ориентации.

3) Недокументированные API вызывает путь (пожалуйста, нет!)

Это было полезно?

Решение

Вы не должны использовать [UIViewController shouldAutorotateToInterfaceOrientation:] Чтобы вызвать изменение ориентации; Это только для того, чтобы система знала, если автоматические вращения разрешены. Вы все равно должны обновить его, чтобы указать ориентацию, которая допускается, хотя.

Если вы хотите изменить ориентацию, когда отображается определенный вид, вы должны позвонить [UIApplication setStatusBarOrientation:animated:] Внутри вашего [UIViewController viewWillAppear:] Переопределить метод для каждого из контроллеров представления, которые заставляют определенную ориентацию. Это приведет к изменению, когда представление нажимается на стек, и когда он выскочит его. Убедитесь, что вы звоните super в вашем методе переопределения.

Это также правильное место для изменения того, как отображается строка состояния, если это то, что вы делаете.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top