Есть две проблемы.Во-первых, вы должны использовать UIKeyboardFrameEndUserInfoKey
вместо UIKeyboardFrameBeginUserInfoKey
.
Во-вторых, вам действительно следует использовать исходную позицию клавиатуры после преобразования ее в локальное координатное пространство вашего представления.Простое использование возвращенного кадра без использования - [UIView convertRect: fromView:] не будет работать, если устройство находится в альбомной ориентации или координаты вашего вида отличаются от координат окна.Вы должны использовать источник преобразованных координат вместо высоты, поскольку высота может относиться к той части клавиатуры, которая находится за пределами экрана.Это происходит, например, при использовании клавиатуры Bluetooth.