У меня есть контроллер просмотра, который прослушивает как UIKeyboardWillShowNotification, так и UIKeyboardWillHideNotification. Обработчики этих уведомлений настраивают различные части представления, что является стандартной процедурой.Клавиатура «WillShow» и «WillHide» против вращения
Следующий код используется для преобразования клавиатуры прямоугольник от координаты экрана:
CGRect keyboardBounds = [self.view convertRect:[keyboardBoundsValue CGRectValue] fromView:nil];
Опять же, стандартная процедура. К сожалению, существует критическая ситуация, когда это преобразование терпит неудачу. Посмотрите, что происходит, когда iPhone поворачивается с портрета на пейзаж при развертывании клавиатуры:
1) iOS автоматически срабатывает UIKeyboardWillHideNotification; self.interfaceOrientation сообщается как портрет; keyboardBounds.height 216.0. Это имеет смысл. Зачем? Поскольку обработчику уведомлений предоставляется возможность «очистить» до того, как представление переключится в альбомный режим.
2) iOS автоматически срабатывает UIKeyboardWillShowNotification; self.interfaceOrientation сообщается как портрет; keyboardBounds.height 480.0. Это НЕ имеет значения. Почему нет? Поскольку обработчик уведомлений собирается делать свою работу, думая, что высота клавиатуры равна 480,0!
Яблоко бросает мяч на этом, или я делаю что-то неправильно?
Обратите внимание, что прослушивание вместо этого для UIKeyboard ShowNotification недействительное решение, поскольку оно значительно ухудшает работу пользователя. Зачем? Поскольку анимация моих изменений в представлении после развертывания развертывания клавиатуры происходит ... ну, довольно ужасно.
Неужели кому-то удалось полностью автоматизировать работу, когда клавиатура развернута? Это похоже на взрыв хаоса, который Apple полностью забыла. >: |
Какую версию iOS вы пытаетесь с этим? – Till
5.1, 5.0 и 4.3.2 – Voobr