UIKeyboardFrameBeginUserInfoKey & UIKeyboardFrameEndUserInfoKey - PullRequest
39 голосов
/ 26 июля 2010

В Управляющей клавиатуре документация :

UIKeyboardFrameBeginUserInfoKey Ключ для объекта NSValue, содержащего CGRect, который идентифицирует начальный кадр клавиатуры в экранных координатах.Эти координаты не учитывают какие-либо факторы поворота, применяемые к содержимому окна в результате изменения ориентации интерфейса.Таким образом, вам может потребоваться преобразовать прямоугольник в координаты окна (используя convertRect: fromWindow: метод) или просмотреть координаты (используя convertRect: fromView: метод) перед его использованием.

UIKeyboardFrameEndUserInfoKey Ключ для объекта NSValue, содержащего CGRect, который идентифицирует конечный кадр клавиатуры в экранных координатах.Эти координаты не учитывают какие-либо факторы поворота, применяемые к содержимому окна в результате изменения ориентации интерфейса.Таким образом, вам может потребоваться преобразовать прямоугольник в координаты окна (используя convertRect: fromWindow: метод) или просмотреть координаты (используя convertRect: fromView: метод) перед его использованием.

Что такоезначение start frame и end frame?В чем разница между ними?

1 Ответ

52 голосов
/ 26 июля 2010

Начальный кадр - это то место, где клавиатура находится в начале анимации: вне экрана, если клавиатура отображается, или на экране, если клавиатура скрыта.Конечный кадр - это то место, где клавиатура будет находиться в конце анимации: наоборот.Вы можете использовать разницу между ними, чтобы написать один метод, который отвечает как на сокрытие, так и на отображение клавиатуры.

Обязательно используйте также UIKeyboardAnimationCurveUserInfoKey и UIKeyboardAnimationDurationUserInfoKey при анимации изменений вашего представления: таким образом, вашанимации и анимации ОС будут синхронизированы.

Еще один совет: документация, которую вы связали с состояниями: «Прямоугольник, содержащийся в свойствах UIKeyboardFrameBeginUserInfoKey и UIKeyboardFrameEndUserInfoKey словаря userInfo, следует использовать только для информации о размере, содержащейся в нем. Не используйте источник прямоугольника (который всегда {0.0, 0.0}) в операциях пересечения прямоугольника ".По крайней мере, на iPad на OS 3.2 это не так.Оба ректа имеют одинаковый размер, в то время как источник, который находится в экранных координатах, отличается между ними.

Вам может пригодиться этот вопрос: UIKeyboardBoundsUserInfoKey устарел, что использовать вместо этого?

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