Я думаю, что больше проблем, чем решено в других ответах. Например, вы можете получить следующую клавиатуру:
Это происходит, когда вы нажимаете кнопку «скрыть» на клавиатуре iPad на iOS 9. Эта клавиатура по-прежнему имеет размер full
в информации уведомления от ответа Mike Gledhill
. (в UIKeyboardFrameEndUserInfoKey
высота клавиатуры выше 300).
Мне пришлось вычесть происхождение клавиатуры по оси Y из высоты устройства, чтобы прийти к правильному значению.
- (void)keyboardWillShow:(NSNotification *)notification
NSDictionary *info = [aNotification userInfo];
CGRect keyboardFrame = [info[UIKeyboardFrameBeginUserInfoKey] CGRectValue];
keyboardFrame = [info[UIKeyboardFrameEndUserInfoKey] CGRectValue];
keyboardFrame = [self.view convertRect:keyboardFrame fromView:nil];
CGFloat yPosition = keyboardFrame.origin.y;
NSInteger height = [UIScreen mainScreen].bounds.size.height - yPosition;
}
У меня работает на iOS9 с iPhone и iPad в обеих ориентациях.