Какова высота экранной клавиатуры iPad? - PullRequest
50 голосов
/ 18 ноября 2010

Я ищу два числа здесь: высота в портретной ориентации и высота в альбомной ориентации. Не отвечайте в сантиметрах или дюймах, а в пикселях.

Ответы [ 12 ]

118 голосов
/ 23 декабря 2010

Высота портрета составляет 264, а высота ландшафта - 352.

Я знаю, что это поздний ответ, но я только что столкнулся с этим вопросом сам.

55 голосов
/ 08 июня 2011
- (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
}
28 голосов
/ 06 января 2013

Ответ: зависит .

Мне известно о 16 различных высотах клавиатуры, и она может быть в любом положении.

Это отличается для:

  1. пейзаж / портрет,
  2. webview / non-webview,
  3. азиатский стиль выбора символов, обычный язык
  4. разделенная клавиатура / неразделенная

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

sample ipad keyboard configurations

Вместо того, чтобы перечислять все 16 возможностей, я думаю, вы хотите наблюдать UIKeyboardWillShowNotification / UIKeyboardWillHideNotification и UIKeyboardDidChangeFrameNotification (iOS 5.0+), а затем получить кадр клавиатуры из этих событий.

17 голосов
/ 09 января 2011

На iPad размер клавиатуры также может зависеть от языка (например, японская клавиатура выше).Еще одна причина, чтобы запросить его программно.

6 голосов
/ 23 июня 2011

Вы можете получить высоту клавиатуры из словаря userInfo , возвращаемого уведомлением о желании / показе / скрытии клавиатуры, как предусмотрено классом UIWindow ( ссылка справочного руководства ).Это гораздо лучший способ получить высоту, чем жесткое кодирование, поскольку вы получаете следующие преимущества:

  • Независимость от устройства (iPhone / iPod или iPad)
  • Независимость от разрешения (iPhone 3G)Экран / Retina Display / iPad дисплей / будущие дисплеи).
  • Тип клавиатуры / независимость стиля (разные экранные клавиатуры могут иметь разные размеры).

На самом деле, ответы наэтот вопрос, который дает точное число, скорее всего, получил это число, посмотрев на результаты, возвращенные в этом словаре!

5 голосов
/ 06 января 2015

Я проголосовал за пару ответов на этой странице, поскольку они опасно вводят в заблуждение.

Конечно, с 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);

}

Кстати,не забудьте этот вызов convertRect в приведенном выше коде.

Без него я обнаружил, что на iPad, работающем в альбомной ориентации с iOS 8, иногда клавиатурапортируется как имеющий высоту 1024 пикселей ..

Еще одна вещь ...

Сегодня я работал над пользовательским элементом управления, который я написал, которыйпоявляется в нижней части экрана iPhone / iPad, и я понял, что не учел высоту экранной клавиатуры.

Я не хотел добавлять уведомления клавиатурыWillShow / Hide, так как этот маленький элемент управления был общим,можно вызывать с любого из моих экранов.

Моим решением для определения высоты экранной клавиатуры, если она была видна в данный момент, было использование превосходной функции visibleKeyboardHeight из бесплатной SVProgressHUD control.

Для этого элемента управления также требовалась высота экранной клавиатуры, поэтому его уведомление UIView s будет отображаться вертикально по центру.

обработайте ... так что если вам do нужен быстрый и грязный метод определения высоты клавиатуры, возьмите копию этого кода и посмотрите в файл SVProgressHUD.m .

Скачать SVProgressHUD с GitHub

3 голосов
/ 18 ноября 2010

Вы можете узнать это программно (через симулятор, если у вас нет устройства).

http://developer.apple.com/library/ios/#documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html#//apple_ref/doc/uid/TP40009542-CH5-SW1

2 голосов
/ 19 ноября 2013

В iOS 7 для iPad это 402 для альбомной ориентации и 314 для портретной

1 голос
/ 17 марта 2015

В 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;
}
1 голос
/ 10 декабря 2010

Высота: ПОРТРЕТ = 264 ЛАНДШАФТ = 352

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...