popViewController не выполняет автоматический возврат к разрешенной ориентации - PullRequest
6 голосов
/ 07 мая 2010

У меня есть два UIViewControllers, «A» и «B», где «A» переопределяет mustAutorotateToInterfaceOrientation для возврата YES для UIInterfaceOrientationPortrait, а «B» возвращает YES для всех ориентаций.В моем примере «A» является корневым контроллером представления навигации, а затем я использую pushViewController для «B».После этого я поворачиваю устройство в альбомную ориентацию, которая успешно автоматически поворачивает «B», затем я нажимаю «B» (кнопка «назад» или через popViewController), чтобы вернуться к «A».

При настройке на iPhone OS 3.1.3,«А» возвращается в портретную ориентацию, как и ожидалось.При назначении iPhone OS 3.2 у меня есть два побочных эффекта:

  1. «A» отображается в альбомной ориентации.
  2. Панель навигации не обновляется, даже если отображается «A»,Панель навигации по-прежнему показывает элементы для «B».Только после попытки вернуться назад / всплыть еще раз анимировать панель навигации, чтобы показать элементы для «A».Если я вместо этого попытаюсь снова нажать «B» и вернуться назад, мне придется нажать дважды , прежде чем навигационная панель оживит, чтобы показать элементы для «A».Во время этих «промежуточных всплывающих окон» по-прежнему отображается представление «A».

При исследовании этой проблемы я видел другие ответы, предлагающие выполнить вращение вручную ([UIDevice setOrientation] или с помощью преобразования),однако это не помогает понять, в чем проблема, особенно почему она ведет себя по-разному между двумя ОС.

Итак, мой вопрос: должны ли все мои UIViewControllers в стеке UINavigationController поддерживать точно одинаковые ориентации в будущем?А если нет, то нужно ли мне что-то сделать, чтобы он вел себя так же, как и для OS 3.1.3?

Ответы [ 2 ]

1 голос
/ 10 июня 2010

Похоже, что для более новых ОС требуются все UIViewController в стеке UINavigationController для поддержки одинакового набора ориентаций.

0 голосов
/ 11 мая 2010

У меня та же проблема, и я нашел ответ по этой ссылке: Проблемы со стеком навигации UINavigationController в ландшафтном режиме Один из моих контроллеров представления не возвратил ДА на shouldAutorotateToInterfaceOrientation.

...