Различное поведение ориентации modalviewcontroller между iphone и ipad - PullRequest
2 голосов
/ 16 декабря 2011

Я совершенно заблудился, пытаясь понять это специфическое поведение в iOS. После 14 часов, прочитав бесчисленные вопросы о переполнении стека и изучив все соответствующие документы Apple, я все еще в замешательстве, так что я надеюсь, что конкретный пример поможет эксперту объяснить его мне.

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

Проще говоря, устройство повернуто в горизонтальное положение. Если я позвоню:

[rootViewController presentModalViewController:modalVC animated:YES];

На iPhone он представлен, как и ожидалось. На iPad он также отображается как ожидалось (содержится в виде страницы с серым фоном)

Позже, в делегате modalVC для встроенной кнопки «Готово», я вызываю:

[rootViewController dissmissModalViewControllerAnimated: YES];

Вот где начинаются симптомы:

На iPhone независимо от того, от того, должен ли rootViewController долженAutoRotateToInterfaceOrientation возвращать ДА или НЕТ, строка состояния сразу входит в портретную ориентацию; модал затем выдвигается в неправильном (книжном, направленном) направлении, и базовый rootViewController теперь отображается в книжной ориентации, не запрашивая его shouldAutoRotate.

На iPad я получаю ожидаемое поведение - модал отклоняется, как ожидалось, и ориентация остается, как и ожидалось.

Что я не понимаю здесь? Я перепробовал много вещей, в том числе переопределение поведения shouldAUtoRotate для modalViewController и использование различных контейнерных viewController. Единственным эффективным решением было создать заглушку UIViewController, прикрепить его представление к keyWindow и вместо этого представить модальное внутри него. Хотя это решает проблему, многочисленные статьи Apple и сторонние организации заявляют, что это неверно (по уважительной причине, так как это не позволяет правильному распространению событий достичь этой заглушки UIViewController.)

1 Ответ

1 голос
/ 25 декабря 2011

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

Это для статической библиотеки, реализованной в стороннем приложении.(Flash, в данном случае), для которого у меня нет исходного кода.Некоторые глубокие отладки показали, что должно было быть очевидным: стороннее приложение, использующее мою библиотеку, делало некоторые сомнительные вычисления в своей собственной функции shouldAutoRotate и возвращало NO для аргумента -any- toInterfaceOrientation в определенных условиях (не верно.)*

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...