2012-07-15 11 views
9

na iPadzie, po zapisaniu się do UIKeyboardDidShowNotificationrozmiar klawiatury zwraca nieprawidłowe wartości?

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

wydruków {352, 1024}

nie jest to źle? Nie tylko wysokość klawiatury jest tak duża, jak wysokość może być większa niż szerokość? A może czegoś brakuje?

Odpowiedz

40

Założę się, że wymiary są raportowane w statycznej orientacji (orientacja "okna" nigdy się nie zmienia), więc sugeruję przetłumaczyć to na twoje zainteresowanie. Mój normalny Sztuką jest, aby przekształcić go w przestrzeni współrzędnych okna widoku rootViewController za:

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

lub bardziej odpowiedni widok jeśli masz dostępne. Kluczem jest to, że wszelkie współrzędne podane w przestrzeni współrzędnych okna nie są obracane, nawet jeśli jest to widok rootVC okna.

+0

Awesome, thanks! – 0xSina

+0

tylko 1 do głosowania w tej sprawie? Bam, teraz masz 2, dzięki! –

+0

Dzięki, zasłużyłeś na to pierwsze zwycięstwo! – Mausimo

Powiązane problemy