Я проголосовал за пару ответов на этой странице, поскольку они опасно вводят в заблуждение.
Конечно, с iOS 8 вы не можете использоватьвысота жестко запрограммированной клавиатуры.
Вот мое приложение, работающее на iPhone, чтобы объяснить причину.
Возьмите свою линейку и скажите, какая высота экранной клавиатуры..?
Ааа ... вы не можете этого сделать, не так ли?
Высота может меняться, если пользователь включает автострока ввода в верхней части экранной клавиатуры (которая, кстати, вызывает второе событие "keyboardWillShow
").
То же самое относится и к экранной клавиатуре на iPad.
Итог: извините, ребята, вы должны измерить высоту клавиатуры в событии keyboardWillShow
.
В противном случае вы столкнетесь с проблемами.
- (void)keyboardWillShow:(NSNotification *)notification {
NSDictionary *info = [notification userInfo];
NSValue *kbFrame = [info objectForKey:UIKeyboardFrameEndUserInfoKey];
CGRect keyboardFrame = [kbFrame CGRectValue];
keyboardFrame = [self.view convertRect:keyboardFrame fromView:nil];
CGFloat heightOfKeyboard = keyboardFrame.size.height;
NSLog(@"The keyboard is now %d pixels high.", (int)heightOfKeyboard);
}
Кстати,не забудьте этот вызов convertRect
в приведенном выше коде.
Без него я обнаружил, что на iPad, работающем в альбомной ориентации с iOS 8, иногда клавиатурапортируется как имеющий высоту 1024 пикселей ..
Еще одна вещь ...
Сегодня я работал над пользовательским элементом управления, который я написал, которыйпоявляется в нижней части экрана iPhone / iPad, и я понял, что не учел высоту экранной клавиатуры.
Я не хотел добавлять уведомления клавиатурыWillShow / Hide, так как этот маленький элемент управления был общим,можно вызывать с любого из моих экранов.
Моим решением для определения высоты экранной клавиатуры, если она была видна в данный момент, было использование превосходной функции visibleKeyboardHeight из бесплатной SVProgressHUD
control.
Для этого элемента управления также требовалась высота экранной клавиатуры, поэтому его уведомление UIView
s будет отображаться вертикально по центру.
обработайте ... так что если вам do нужен быстрый и грязный метод определения высоты клавиатуры, возьмите копию этого кода и посмотрите в файл SVProgressHUD.m .
Скачать SVProgressHUD с GitHub