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