¿Cuál es la diferencia entre UIKeyboardFrameBeginUserInfoKey y UIKeyboardFrameEndUserInfoKey?

¿Significa eso que el "comienzo" devuelve un valor que difiere del que devuelve el "final"?

¡Gracias!

8
Wang Liang 9 nov. 2011 a las 17:23

1 respuesta

La mejor respuesta

UIKeyboardFrameBeginUserInfoKey devolverá el marco del teclado antes de que comience la animación. UIKeyboardFrameEndUserInfoKey devolverá el marco del teclado después de que se haya completado la animación. Como ejemplo, tome el siguiente fragmento de código:

NSDictionary* info = [notification userInfo];
CGRect beginFrame = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue];
CGRect endFrame = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];

Si imprimiera los valores de beginFrame y endFrame en la ventana de depuración, es posible que encuentre algo como esto:

(gdb) print beginFrame
$1 = {
   origin = {
     x = 0, 
     y = 480
   }, 
   size = {
     width = 320, 
     height = 216
   }
 }
 (gdb) print endFrame
 $2 = {
   origin = {
     x = 0, 
     y = 264
   }, 
   size = {
     width = 320, 
     height = 216
   }
 }

Entonces, en un iPhone, esto muestra que el teclado se animará desde la parte inferior de la pantalla. El tamaño del teclado no cambia (como se esperaba), pero las coordenadas y muestran la posición inicial y final del teclado.

13
MikeG 16 feb. 2012 a las 07:56
Antes de que el teclado comience a moverse, debería ser y = 0. No entiendo por qué es 480. -480 tiene más sentido porque el teclado no está en la vista ...
 – 
Bernard
4 abr. 2016 a las 10:24