Я ищу здесь два номера: высота в портрете и высота в пейзаже. Не отвечайте в см или дюймах, а скорее в пикселях.
Какова высота экранной клавиатуры iPad?
Ответ 1
Высота портрета составляет 264, а высота ландшафта - 352.
Я знаю, что это поздний ответ, но я просто наткнулся на этот вопрос сам.
Ответ 2
- (void) keyboardWasShown:(NSNotification *)nsNotification {
NSDictionary *userInfo = [nsNotification userInfo];
CGSize kbSize = [[userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
NSLog(@"Height: %f Width: %f", kbSize.height, kbSize.width);
// Portrait: Height: 264.000000 Width: 768.000000
// Landscape: Height: 352.000000 Width: 1024.000000
}
Ответ 3
Ответ: зависит от.
Я знаю о 16 разных высотах, которые могут быть на клавиатуре, и может быть в любом положении.
Это другое:
- пейзаж/портрет,
- webview/non-webview,
- стиль выбора азиатских символов, обычный язык
- разделенная клавиатура/нерасщепляемая
Я прикрепил изображение, показывающее несколько различных возможных конфигураций.
Вместо перечисления всех 16 возможностей, я думаю, вы хотите наблюдать UIKeyboardWillShowNotification
/UIKeyboardWillHideNotification
и UIKeyboardDidChangeFrameNotification
(iOS 5.0+), а затем получать из этих событий фрейм клавиатуры.
Ответ 4
На iPad размер клавиатуры также может зависеть от языка (например, японская клавиатура выше). Еще одна причина запросить его программно.
Ответ 5
Вы можете получить высоту клавиатуры из словаря userInfo, возвращаемого приложением /show show/hide клавиатуры, как это предусмотрено в классе UIWindow (ссылка на справочное руководство). Это намного лучший способ получить высоту, чем жесткое кодирование, потому что вы получаете следующие преимущества:
- Независимость устройства (iPhone/iPod или iPad)
- Независимость от разрешения (экран iPhone 3G/дисплей сетчатки/дисплей iPad/будущие дисплеи).
- Тип клавиатуры/независимость стиля (разные экранные клавиатуры могут иметь разностные размеры).
На самом деле ответы на этот вопрос, которые дают точное число, скорее всего, получили это число, посмотрев на результаты, возвращаемые в этом словаре!
Ответ 6
Я проголосовал за пару ответов на этой странице, поскольку они опасно вводят в заблуждение.
Конечно, с 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);
}
Btw, не забывайте, что вызов в convertRect
в коде выше.
Без этого я обнаружил, что на iPad, работающем в ландшафте с iOS 8, иногда клавиатура будет иметь высоту 1024 пикселя.
Еще одна вещь...
Сегодня я работал над настраиваемым элементом управления, который я написал в нижней части экрана iPhone/iPad, и понял, что я не учитывал высоту экранной клавиатуры.
Я не хотел добавлять уведомления о клавиатуреWillShow/Hide, поскольку этот небольшой элемент управления был общим, который можно вызвать с любого из моих экранов.
Мое решение найти высоту экранной клавиатуры, если она в настоящее время виден, заключалась в использовании превосходной функции visibleKeyboardHeight из бесплатного элемента управления SVProgressHUD
.
Этот элемент управления также нуждался в высоте экранной клавиатуры, поэтому его уведомление UIView
будет отображаться вертикально-центрированным.
Это сработало... так что если вам нужен быстрый "грязный" метод захвата высоты клавиатуры, возьмите копию этого кода и посмотрите в файле SVProgressHUD.m.
Ответ 7
Вы можете найти это программно (через симулятор, если у вас нет устройства).
Ответ 8
Я не знаю, что это такое, но вы могли бы понять это достаточно легко.
Посидите на своем iPad на странице с этим...
JavaScript
var totalHeight = window.innerHeight;
document.getElementById('what-is-my-height').onclick = function() {
alert(totalHeight - window.innerHeight);
};
HTML
<button id="what-is-my-height">Bring up keyboard, then push me</button>
Нажмите кнопку (после того, как вы подняли экранную клавиатуру), и она должна указать высоту. Повторите для другой ориентации.
Ответ 9
В iOS 7 для iPad это 402 для пейзажа и 314 для портрета
Ответ 10
Высоты: ПОРТРЕТ = 264 LANDSCAPE = 352
Ответ 11
В iOS 7 возникла проблема, когда высота и ширина не менялись в ландшафтном режиме, но проблема была исправлена в iOS 8.
Итак, вот фрагмент кода, который всегда возвращал высоту для iOS7 или iOS8, тем самым устраняя проверку конкретной версии вашего кода.
- (void)keyboardWasShown:(NSNotification*)aNotification
{
NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
//Always gives the height as the height is of smaller dimension
CGFloat height = (kbSize.height>kbSize.width)?kbSize.width:kbSize.height;
}
Ответ 12
Я думаю, что есть больше проблем, чем в других ответах. Например, вы можете использовать эту клавиатуру:
Это происходит, когда вы нажимаете кнопку "скрыть" на iPad-клавиатуре на iOS 9. Эта клавиатура имеет размер full
в информации уведомлений от ответа Mike Gledhill
. (в UIKeyboardFrameEndUserInfoKey
высота клавиатуры выше 300).
Мне пришлось вычесть начало оси вектора с высоты устройства, чтобы получить правильное значение.
- (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 с iPhones и iPads в обеих ориентациях.