У меня возникли проблемы с надежностью получения фактической высоты клавиатуры. Я добавляю настраиваемую панель инструментов, предназначенную для размещения непосредственно над клавиатурой. Чтобы сделать это с ограничениями макета, я добавил ограничение статического пространства между нижней частью экрана и нижней частью панели инструментов. Когда клавиатура отображается, я изменяю это ограничение как высоту клавиатуры, которая немного меняется в iOS 8.
Чтобы изменить размер проставки, в настоящее время я использую следующий метод, который запускается на UIKeyboardDidShowNotification
-(void)keyboardDidShow:(NSNotification*)notification
{
CGFloat height = [[notification.userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].height;
self.shimConstraint.constant = height;
[self.view layoutIfNeeded];
}
Это иногда неправильно изменяет размер ограничения, но часто возвращаемая высота клавиатуры полностью неверна. Каков наилучший способ надежно получить высоту клавиатуры после ее отображения?
EDIT: приложение позволяет пользователю переключаться между несколькими полями ввода. Некоторые из них отключены автокоррекции, поэтому панель автокоррекции может быть или не быть скрытой, а неправильные высоты возвращаются при переключении полей.