У меня есть UIViewController, который возвращает YES
в shouldAutorotateToInterfaceOrientation:
для UIDeviceOrientationPortrait
и NO
для всего остального. С этим видом в верхней части стека я использую pushViewController:animated:
, чтобы нажать новый UIViewController
. Новый контроллер возвращает YES
для чего-либо в shouldAutorotateToInterfaceOrientation:
.UINavigationController and autorotation
Первый вид отказывается вращаться (как и ожидалось). Как только второе представление будет нажато, пользователь может повернуть устройство, и пользовательский интерфейс будет вращаться (также как и ожидалось). Если второе изображение находится в ландшафтном режиме, и пользователь нажимает кнопку «Назад» (который вызывает popViewControllerAnimated:
), первое изображение будет повернуто (неожиданно!).
Если пользователь поворачивает устройство обратно в портретную ориентацию, вид будет вращаться, а затем застрять в портретном режиме, как и раньше. Это работает, но оно уродливо для пользователя, пока они не вернутся назад. Поэтому я ищу способ сделать это представление в портретном режиме.
Единственным обходным решением, которое я нашел до сих пор, является использование -[UIDevice setOrientation:]
, которое выдает предупреждение (orientation
доступно только для чтения), но работает, поскольку оно фактически определено. Это огромный взлом, и я бы хотел найти реальное решение. В поисках реального решения я приложил GDB к приложению «Фотографии» (MobileSlideshow.app) и обнаружил, что он также использует -[UIDevice setOrientation:]
. Будучи внутренним приложением, хотя, я думаю, у них разные правила.
Есть ли правильный способ достижения ожидаемого поведения авторотации?
Я считаю, что есть примеры приложений, которые (предположительно) используют setOrientation в магазине приложений. Одним из них является Tweetie, который может заставить пейзажную клавиатуру при написании твитов. Возможно, им это удалось, поскольку это не настройки по умолчанию. –
Сейчас 2014 год, и эта проблема все еще встречается на ios 8. Кто-нибудь нашел реальный ответ на эту проблему, но это не похоже на взлом? –