Какова высота экранной клавиатуры 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,
  • стиль выбора азиатских символов, обычный язык
  • разделенная клавиатура/нерасщепляемая

Я прикрепил изображение, показывающее несколько различных возможных конфигураций.

sample ipad keyboard configurations

Вместо перечисления всех 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, чтобы объяснить причину.

Возьмите свой линейку и скажите мне, какова высота экранной клавиатуры..?

enter image description here

Ах... ты не можешь это сделать, не так ли?

Высота может меняться, если пользователь включает панель автоматического типа в верхней части экранной клавиатуры (которая, кстати, вызывает второе событие 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.

Загрузить SVProgressHUD из GitHub

Ответ 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 в обеих ориентациях.