UIKeyboardFrameBeginUserInfoKey & UIKeyboardFrameEndUserInfoKey

В Управлении документацией Клавиатуры:

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

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

Из чего значение start frame и end frame? Каково различие между ними?

39
задан Meet Doshi 31 December 2015 в 14:45
поделиться

1 ответ

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

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

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

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

52
ответ дан 27 November 2019 в 02:46
поделиться