2012-07-15 17 views
9

auf iPad, nach der Anmeldung zu UIKeyboardDidShowNotificationTastaturgröße gibt falsche Werte zurück?

NSDictionary* info = [aNotification userInfo]; 
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; 
NSLog(@"%@", NSStringFromCGSize(kbSize)); 

druckt diese {352, 1024}

Ist das nicht falsch? Nicht nur ist die Höhe der Tastatur so groß, wie kann die Höhe größer als die Breite sein? Oder fehlt mir etwas?

Antwort

40

Ich wette, dass die Dimensionen in einer statischen Ausrichtung gemeldet werden (die 'Fenster' Ausrichtung ändert sich nie wirklich), also schlage ich vor, das zu Ihrer Ansicht von Interesse zu übersetzen. Mein normaler Trick ist es mit dem Raum-Koordinaten des Fensters RootViewController Ansicht zu konvertieren:

CGRect rawKeyboardRect = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue]; 
CGRect properlyRotatedCoords = [self.view.window convertRect:rawKeyboardRect toView:self.view.window.rootViewController.view]; 

Oder eine geeignetere Ansicht, wenn Sie eine zur Verfügung haben. Der Schlüssel ist, dass alle im Koordinatenraum des Fensters angegebenen Koordinaten nicht gedreht werden, selbst wenn die Ansicht rootVC des Fensters ist.

+0

Ehrfürchtig, danke! – 0xSina

+0

nur 1 bis abstimmen? Bam, jetzt hast du 2, danke! –

+0

Danke, du verdienst diese Abstimmung! – Mausimo

Verwandte Themen