подпредставления показывают перепутанное повернутое состояние после отображения модального диалога - PullRequest
0 голосов
/ 16 мая 2010

Я создал пользовательский UIViewController, который имитирует UISplitViewController. Он управляет двумя дочерними контроллерами представления, которые отображаются в левой и правой частях тела в горизонтальной плоскости, и скрывает левую часть для отображения в всплывающем окне в портретной ориентации. Он работает нормально, используя didRotateFromInterfaceOrientation: и willRotateToInterfaceOrientation: сообщения для сброса расположения и размеров дочерних представлений. Все представления и дочерние контроллеры загружаются из пера. Этот пользовательский контроллер представления отображается внутри UINavigationController.

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

Мне интересно, если у людей была подобная проблема, и каково решение. Я уверен, что пример кода будет полезен, но потребуется много усилий, чтобы перевести его в работающий образец.

Ответы [ 2 ]

0 голосов
/ 01 сентября 2010

Когда я увидел такое же поведение в своем приложении с разделенным видом, я заметил, что это происходит только тогда, когда я держу устройство в положении «левая кнопка домой». Я установил исходную ориентацию интерфейса на «правую кнопку домой», но разрешил альбомную ориентацию левой или правой кнопки «Домой» (для этого приложения книжная ориентация отсутствует). Мое решение состояло в том, чтобы больше не поддерживать альбомную ориентацию левой кнопки дома, и теперь все постмодальные подпредставления отображаются надежно.

0 голосов
/ 16 июля 2010

Да, у меня была такая же проблема, но я не смог найти решение. Я думал о нескольких вещах: Когда изменения ориентации присутствуют каждый из дочерних контроллеров представления модально без анимации и немедленно закрываются. Это работает, но у меня были проблемы с отображением двух контроллеров представления один за другим. Также, когда контроллер представления представлен модально, выполняются некоторые дополнительные вызовы viewWillAppear и т. Д., Которые могут сделать приложение непредсказуемым.

Другая идея состояла в том, чтобы добавить к tabviewcontroller и представить его таким же образом. Но это не сработало. Поэтому я прибег к обходному пути, когда не представляю какой-либо модальный viewcontroller дочернему viewcontroller. По этой же причине нельзя доверять self.interfaceorientation.

...