ipsw - Problemas de UIKeyboardWillShowNotification con ios 11 beta 7
itunes (3)
Probando mi aplicación en iOS 11 beta 7 - parece que el teclado no empuja hacia arriba el contenido si mi UIViewController.
El código se ve así (en funcionamiento desde iOS7):
- (void)handleNotification:(NSNotification*)notification {
if (notification.name == UIKeyboardWillShowNotification) {
CGSize keyboardSize = [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
nextButtonALBottomDistance.constant = keyboardSize.height + initialPhoneBottomDistance;
codeBottomViewALBottomDistance.constant = keyboardSize.height + initialCodeBottomDistance;
double animationDuration = [[[notification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
[UIView animateWithDuration:animationDuration animations:^{
[self.view layoutIfNeeded];
}];
}
else if (notification.name == UIKeyboardWillHideNotification) {
nextButtonALBottomDistance.constant = initialPhoneBottomDistance;
codeBottomViewALBottomDistance.constant = initialCodeBottomDistance;
double animationDuration = [[[notification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
[UIView animateWithDuration:animationDuration animations:^{
[self.view layoutIfNeeded];
}];
}
}
Es bastante interesante: cuando presiono el botón de inicio (minimizando la aplicación) y lo vuelvo a abrir (sin matarlo), el diseño es fijo.
Parece un error beta de iOS 11, pero no pude encontrar ninguna referencia hasta el momento.
Feliz de saber si alguien más está teniendo este problema.
Me encontré con este problema de no movimiento también. Sospecho que el cuadro inicial y final siempre fue incorrecto, en el sentido de que eran iguales o casi iguales, pero se resolvió recientemente en iOS 11 y, como tal, rompió una gran cantidad de código que no entendía realmente la diferencia entre estos dos marcos .
Según la información aquí https://.com/a/14326257/5282052
Comenzar es como se ve el teclado, que la mayoría no querrá. El final es el resultado de cómo se verá el teclado, que a la mayoría solo le preocupa.
[[[notificación userInfo] objectForKey: UIKeyboardFrameEndUserInfoKey] CGRectValue] .size;
De hecho, resuelve mi problema con un movimiento CERO de la vista de desplazamiento.
Si está utilizando la clave UIKeyboardFrameBeginUserInfoKey para obtener la altura del teclado, reemplácela con UIKeyboardFrameEndUserInfoKey para obtener la altura correcta del teclado.
En iOS 11, el valor de altura del marco para la clave UIKeyboardFrameBeginUserInfoKey es 0 porque es un marco de inicio. Para obtener la altura real, necesitamos el cuadro final, y UIKeyboardFrameEndUserInfoKey devuelve el cuadro final.
Consulte Administración de la documentación del teclado:
UIKeyboardFrameBeginUserInfoKey La clave para un objeto NSValue que contiene un CGRect que identifica el cuadro de inicio del teclado en coordenadas de pantalla. Estas coordenadas no tienen en cuenta ningún factor de rotación aplicado a los contenidos de la ventana como resultado de los cambios de orientación de la interfaz. Por lo tanto, es posible que necesite convertir el rectángulo en coordenadas de ventana (utilizando el método convertRect: fromWindow:) o para ver las coordenadas (utilizando el método convertRect: fromView: antes de usarlo).
UIKeyboardFrameEndUserInfoKey La clave para un objeto NSValue que contiene un CGRect que identifica el cuadro final del teclado en coordenadas de pantalla. Estas coordenadas no tienen en cuenta ningún factor de rotación aplicado a los contenidos de la ventana como resultado de los cambios de orientación de la interfaz. Por lo tanto, es posible que necesite convertir el rectángulo en coordenadas de ventana (utilizando el método convertRect: fromWindow:) o para ver las coordenadas (utilizando el método convertRect: fromView: antes de usarlo).
Use UIKeyboardFrameEndUserInfoKey porque esa clave es para el objeto NSValue que contiene un CGRect que identifica un cuadro final del teclado en coordenadas de pantalla. No use UIKeyboardFrameBeginUserInfoKey .