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