У меня есть приложение splitView, у которого есть rootViewController и DetailsViewController
Когда приложение загружает detailsViewController, появляется модальный viewController, который содержит UINavigationBar.
UINavigationBar имеет панель поиска (устанавливается программно). Когда фокус находится на панели поиска, появляется клавиатура.
Однако, в зависимости от ориентации устройства (симулятора), клавиатура всплывает в неправильной ориентации. Клавиатура всегда отображается так, как если бы ipad находился в «нормальном» положении (т. Е. Сбоку от клавиши home)
Я возвращаю ДА во всех методах shouldAutoRotate:
- (BOOL)shouldAutorotateToInterfaceOrientation:
(UIInterfaceOrientation)interfaceOrientation;
Чтобы попытаться выяснить, что происходит, я добавил в каждый класс некоторый код отладки, чтобы регистрировать interfaceOrientation
каждый раз, когда вызывается событие shouldAutorotate, и в то же время показывает, когда срабатывает модальный метод viewDidLoad
. Я сделал тест для каждой ориентации: выходные данные отладки показаны ниже.
Отладка показывает, что независимо от фактической ориентации устройства ориентации интерфейса rootViewController и DetailsViewController всегда являются книжными .
Единственные правильные журналы (где ориентация интерфейса = ориентация устройства) - это первый и последний (третий) раз, когда модальные события shouldAutorotate запускаются в каждом тесте.
Если я поверну iPad после запуска приложения, клавиатура отобразится в правильной ориентации.
Может кто-нибудь пролить свет на то, почему это может происходить и как этого избежать?
[ПОРТРЕТ]
Home Button Положение: внизу
Появляется клавиатура: внизу
DEBUG:
APP DELEGATE - ДОБАВИТЬ SPLITVIEWCONTROLLER
ДЕТАЛИ Интерфейс Портрет
ROOT-интерфейс Портрет
ROOT-интерфейс Портрет
ДЕТАЛИ Интерфейс Портрет
Модальный интерфейс Портрет
MODAL DID LOAD
MODAL-ROTATE START
MODAL-ROTATE END
Модальный интерфейс Портрет
[ЛАНДШАФТ]
Положение домашней кнопки: слева
Появляется клавиатура: слева
DEBUG:
APP DELEGATE - ДОБАВИТЬ SPLITVIEWCONTROLLER
ДЕТАЛИ Интерфейс Портрет
ROOT-интерфейс Портрет
ROOT-интерфейс Портрет
ДЕТАЛИ Интерфейс Портрет
ЛАНДШАФТ МОДАЛЬНОГО ИНТЕРФЕЙСА
MODAL DID LOAD
MODAL-ROTATE START
MODAL-ROTATE END
Модальный интерфейс Портрет
ЛАНДШАФТ МОДАЛЬНОГО ИНТЕРФЕЙСА
[ПОРТРЕТ]
Home Button Положение: верх
Появляется клавиатура: верх
DEBUG:
APP DELEGATE - ДОБАВИТЬ SPLITVIEWCONTROLLER
ДЕТАЛИ Интерфейс Портрет
ROOT-интерфейс Портрет
ROOT-интерфейс Портрет
ДЕТАЛИ Интерфейс Портрет
Модальный интерфейс Портрет
MODAL DID LOAD
МОДАЛЬНО-ВРАЩАЕМЫЙ СТАРТ
MODAL-ROTATE END
Модальный интерфейс Портрет
Модальный интерфейс Портрет
[ЛАНДШАФТ]
Home Button Положение: вправо
Появляется клавиатура: справа
DEBUG:
APP DELEGATE - ДОБАВИТЬ SPLITVIEWCONTROLLER
ДЕТАЛИ Интерфейс Портрет
ROOT-интерфейс Портрет
ROOT-интерфейс Портрет
ДЕТАЛИ Интерфейс Портрет
ЛАНДШАФТ МОДАЛЬНОГО ИНТЕРФЕЙСА
MODAL DID LOAD
MODAL-ROTATE START
MODAL-ROTATE END
Модальный интерфейс Портрет
ЛАНДШАФТ МОДАЛЬНОГО ИНТЕРФЕЙСА