2012-12-21 9 views
5

Wpadłem na ten problem wcześniej w tym tygodniu i ponownie właśnie teraz. Jestem w trakcie ustawiania przesunięcia klawiatury, gdy klawiatura pojawia się na ekranie, gdy użytkownik jest w trybie poziomym iPada. iPady mają wymiar 1024 x 768.Dlaczego wysokość klawiatury iPada w trybie poziomym wynosi 1024 pikseli?

- (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 
} 

Jak to się dzieje, że wysokość klawiatury może wynosić 1024? Oznaczałoby to, że klawiatura obejmuje teraz cały ekran. Zakładam, że wysokość powinna wynosić 352, a szerokość powinna wynosić 1024. Czy to błąd?

Odpowiedz

10

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

UIKeyboardFrameBeginUserInfoKey

Kluczem do obiektu NSValue zawierającej CGRect identyfikującą ramkę początkową klawiaturze we współrzędnych ekranowych. Współrzędne te nie uwzględniają żadnych czynników rotacyjnych zastosowanych do zawartości okna w wyniku zmian orientacji interfejsu. W związku z tym konieczne może być przekonwertowanie prostokąta na współrzędne okna (za pomocą metody convertRect: fromWindow:) lub przeglądanie współrzędnych (za pomocą metody convertRect: fromView:) przed użyciem.

Powiązane problemy