2012-07-15 18 views
9

En el iPad, después de suscribirse a UIKeyboardDidShowNotificationtamaño del teclado que devuelve valores incorrectos?

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

impresiones {352, 1024}

no es esto mal? No solo la altura del teclado es tan grande, ¿cómo puede la altura ser más grande que el ancho? ¿O me falta algo?

Respuesta

40

Apuesto a que las dimensiones se informan en una orientación estática (la orientación de 'ventana' en realidad nunca cambia), por lo que sugiero traducir eso a su punto de interés. Mi truco es normal, para convertirlo en el espacio de coordenadas del punto de vista de la ventana de RootViewController:

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

O una visión más adecuada si tiene uno disponible. La clave es que las coordenadas informadas en el espacio de coordenadas de la ventana no se rotan, incluso si la vista de rootVC de la ventana sí lo está.

+0

Impresionante, gracias! – 0xSina

+0

solo 1 voto al respecto? Bam, ahora tienes 2, gracias! –

+0

¡Gracias, mereces esta votación! – Mausimo

Cuestiones relacionadas