2012-12-21 26 views
5

Bu sorunun daha önce haftada bir kez daha tekrar başladım. Kullanıcı, iPad'in yatay modundayken, ekranda klavyenin görünmesi için klavye ofsetimi ayarlama aşamasındayım. Nasıl klavyenin yüksekliği 1024 olabilir ki iPad'ler 1024 x 768.Manzara modundayken iPad klavye yüksekliği neden 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 
} 

bir boyuta sahip? Bu, klavyenin şimdi tüm ekranı kapsadığı anlamına gelir. Yüksekliğin 352, genişliğinin ise 1024 olması gerektiğini varsayardım. Bu bir hata mı?

cevap

10

ekran koordinatları klavyenin başlangıç ​​karesini tanımlayan bir CGRect ihtiva eden bir NSValue nesnesi için anahtar UIKeyboardFrameBeginUserInfoKey

http://developer.apple.com/library/ios/documentation/uikit/reference/UIWindow_Class/UIWindowClassReference/UIWindowClassReference.html#//apple_ref/doc/uid/TP40006817-CH3-SW27 kaynaktan. Bu koordinatlar, arabirim yönelimi değişikliklerinin bir sonucu olarak pencerenin içeriğine uygulanan herhangi bir döndürme faktörünü hesaba katmaz. Bu nedenle, dikdörtgeni pencere koordinatlarına (convertRect: fromWindow: method kullanarak) veya kullanmadan önce koordinatları (convertRect: fromView: yöntemini kullanarak) görüntülemeniz gerekebilir.