Предпочитаемая ориентация интерфейса iOS6 не работает

Я пытаюсь работать с беспорядком автоповорота iOS6.

Я просмотрел почти каждый вопрос SO, относящийся к нему, и, что бы я ни пытался, я не могу заставить вращение работать так, как мне нужно.

Приложение использует раскадровки, и макет выглядит следующим образом:

Navigation controller ---> Root view controller ---> Tab view controller ---> View controller ---> Landscape view controller.

Контроллер представления автоматически поворачивается, когда я поворачиваю симулятор, но при переходе к предыдущему виду (который установлен в портретном режиме) вид становится альбомным, хотя он должен быть портретным. Если я поверну симулятор назад, вид снова автоматически повернется к портрету, но это должно было быть сделано автоматически!

Я реализовал (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation, и он не вызывается ни в одном контроллере представления, в который я его вставил.

Я создал подкласс NavigationController, чтобы он возвращал shouldAutoRotate, supportedInterfaceOrientations и preferredInterfaceOrientationForPresentation topViewController, и автоповорот при вращении симулятора, кажется, работает, но preferredInterfaceOrientationForPresentation никогда не выполняет свою работу.

У кого-нибудь есть решение?


person ThisDarkTao    schedule 27.05.2013    source источник
comment
в построителе интерфейсов для каждого вида есть раздел, в котором вы можете указать, как он будет выглядеть в заданной ориентации. Вы уже играли с этим?   -  person Pinwheeler    schedule 28.05.2013
comment
Да, ориентация в Simulated Metrics настроена на книжную и альбомную, соответственно для каждого вида.   -  person ThisDarkTao    schedule 28.05.2013
comment
предпочитаемыйInterfaceOrientationForPresentation вызывается только для контроллеров модального представления.   -  person user1459524    schedule 28.05.2013
comment
Реализуйте - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation для каждого из контроллеров представления.   -  person Pochi    schedule 28.05.2013
comment
Вы установили ориентацию в файле info.plist ??   -  person NiravPatel    schedule 28.05.2013
comment
shouldAutorotateToInterfaceOrientation не вызывается, и у меня есть ориентация, установленная в Info.plist.   -  person ThisDarkTao    schedule 28.05.2013


Ответы (1)


Похоже, Apple удалила возможность нажимать вид в определенной ориентации. preferredInterfaceOrientationForPresentation действительно вызывается, но только при возвращении или представлении контроллера представления. Мне пришлось представить свой пейзажный вид, а не нажимать его, и установить shouldAutoRotate = НЕТ.

См.: В iOS6 проблемы с принудительным принуждением ViewController к определенному interfaceOrientation при помещении в стек для более подробной информации.

person ThisDarkTao    schedule 28.05.2013