Почему высота клавиатуры iPad в ландшафтном режиме составляет 1024px?


Я столкнулся с этим вопросом ранее на этой неделе и снова только сейчас. Я нахожусь в процессе настройки смещения клавиатуры, когда клавиатура появляется на экране, когда пользователь находится в ландшафтном режиме iPad. iPad имеет размер 1024 x 768.

- (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: 1024.000000 Width: 352.000000
}

Как получилось, что высота клавиатуры может быть 1024? Это означало бы, что клавиатура теперь покрывает весь экран. Я бы предположил, что высота должна быть 352, а ширина-1024. Это что, жучок?

1 5

1 ответ:

От http://developer.apple.com/library/ios/documentation/uikit/reference/UIWindow_Class/UIWindowClassReference/UIWindowClassReference.html#//apple_ref/doc/uid/TP40006817-CH3-SW27

UIKeyboardFrameBeginUserInfoKey

Ключ для объекта NSValue, содержащего CGRect, который идентифицирует начальный кадр клавиатуры в координатах экрана. Эти координаты не учитывают никакие коэффициенты поворота, применяемые к содержимому окна в целом. результат изменения ориентации интерфейса. Таким образом, перед использованием прямоугольника может потребоваться преобразовать его в координаты окна (с помощью метода convertRect:fromWindow:) или просмотреть координаты (с помощью метода convertRect:fromView:).