Manejo de cambios de altura del teclado en el desarrollo de iOS
En el desarrollo de iOS, el uso del teclado es muy común. Antes de la versión 5.0 del SDK, la altura del teclado tenía un valor fijo de 216 px; después de la versión 5.0, la altura del teclado cambiará según el idioma del teclado (en este caso, la interfaz generalmente debe reorganizarse).
UIKeyboardWillShowNotification; UIKeyboardDidShowNotification; UIKeyboardDidHideNotification; UIKeyboardDidHideNotification; UIKeyboardDidHideNotification;
Estas notificaciones estaban disponibles antes del SDK 5.0, por lo que sabes lo que significan.
UIKeyboardWillChangeFrameNotification __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0); UIKeyboardDidChangeFrameNotification __ OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0);
Estas dos notificaciones aparecieron después del SDK 5.0 y se utilizan para manejar cambios en la altura del teclado.
La forma de usarlos es: primero registrar el observador en la notificación, por ejemplo:
if([[[UIDevice currentDevice] systemVersion] floatValue] >= 5.0) { [ [NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil];}
Recibirá una notificación cuando la altura del teclado esté a punto de cambiar. los parámetros de la notificación, puede obtener la altura actual del teclado y la altura objetivo modificada, por ejemplo:
-[[UIDDevice currentDevice] systemVersion] floatValue] >= 5.:
-(void)keyboardWillChangeFrame:( NSNotification*)notif{#if __IPHONE_OS_ VERSION_MIN_REQUIRED >= __IPHONE_3_2 NSValue *keyboardBoundsValue = [[notif userInfo] objectForKey.UIKeyboardFrameEndEngine]]:UIKeyboardFrameEndUserInfoKey]; notificar userInfo] objectForKey:UIKeyboardBoundsUserInfoKey ]; #endif CGRect tecladoEndRect = [keyboardBoundsValue CGRectValue]; CGRect inputFrame = self.feedBackTextView.frame //kb 216 vs textFrame 185 float delta = tecladoEndRect.size.height - 216; .height; inputFrame.size.height = 185 - delta.size.height = 185 - delta; if (inputFrame.size.height! = originalHeight) { self.feedBackTextView.frame = inputFrame; }
De la notificación. Alguna información adicional que se puede recuperar en userInfo es la siguiente: web.feedBackTextView.frame = Alguna información adicional que se puede recuperar en el cuadro de entrada userInfo es la siguiente:
UIKeyboardFrameBeginUserInfoKey // CGRectUIKeyboardFrameEndUserInfoKey // CGRectUIKeyboardAnimationDurationUserInfoKey // NSNumber de dobleUIKeyboardAnimationCurveUserInfoKey // NSNumber de doble
no
La información completa de userInfo en tif es la siguiente:
KeyboardChange:{ UIKeyboardAnimationCurveUserInfoKey = 0; UIKeyboardAnimationDurationUserInfoKey = "0.25"; UIKeyboardCenterBeginUserInfoKey = UIKeyboardFrameChangedByUserInteraction = 0: {{0, 480}, {320, 216}}";}
A continuación se muestra una solución completa. Los usuarios necesitan conocer los cambios detallados en la altura del teclado
Las siguientes soluciones solo consideran el manejo de la apariencia y desaparición del teclado