2012-12-21 18 views
5

Mi sono imbattuto in questo problema all'inizio della settimana e di nuovo solo ora. Sono in procinto di impostare l'offset della tastiera per quando la tastiera appare sullo schermo quando l'utente è in modalità orizzontale di un iPad. Gli iPad hanno una dimensione di 1024 x 768.Perché l'altezza della tastiera iPad, in modalità orizzontale, 1024px?

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

Come è possibile che l'altezza della tastiera sia 1024? Ciò significherebbe che la tastiera ora copre l'intero schermo. Suppongo che l'altezza dovrebbe essere 352 e la larghezza dovrebbe essere 1024. Si tratta di un bug?

risposta

10

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

UIKeyboardFrameBeginUserInfoKey

La chiave per un oggetto NSValue contenente un CGRect che identifica il fotogramma iniziale della tastiera in coordinate dello schermo. Queste coordinate non tengono conto di eventuali fattori di rotazione applicati ai contenuti della finestra come risultato delle modifiche all'orientamento dell'interfaccia. Quindi, potrebbe essere necessario convertire il rettangolo in coordinate di finestra (usando convertRect: fromWindow: method) o per visualizzare le coordinate (usando il metodo convertRect: fromView:) prima di usarlo.

Problemi correlati