TODO cae de nuevo en la IU
Esta advertencia se puede implementar de varias diferentes objetos: selectores, teclado, etc.
He encontrado que está relacionado con la interfaz de usuario dando dos pasos para completar una transición u otra animación. O para cualquier instancia donde la interfaz de usuario esté tratando de terminar una cosa y se le pida que ejecute otra antes de que haya terminado. (por lo tanto, abarca una amplia gama de activadores posibles)
He visto la advertencia en 4.0 & 4.2. En mi caso, estaba trabajando con la rotación del dispositivo y la captura de si el teclado aún estaba arriba (es decir, el campo de texto seguía siendo el primero en responder). Si es así, el teclado debe mantenerse entre las vistas, pero esto presenta otras complicaciones con otras vistas.
Por lo tanto, implementé un rastreador BOOL para realizar un seguimiento si keybaordIsPresent, y si es así, {textfield resignFirstResponder]; al detectar el cambio de orientación y restablecer el campo de texto para convertirse en FristResponder después de la transición que estaba envuelta en un bloque de animación. Mi seguidor BOOL funcionó mejor, todavía utilizo las NSNotifications para el teclado, pero hubo superposiciones de notificaciones durante las rotaciones porque el teclado se descartaba sin solicitarlo. El BOOL se establece en NO en Load, y cuando [textfield resignFirstResponder]; está implementado. * no cuando "- (void) keyboardWillhide es desencadenado por NSNotifications, lo que me da desencadenantes de trabajo que nunca entran en conflicto. BOOL se establece en SÍ, solo cuando el usuario toca el campo de texto que activa automáticamente becomeFirstResponder.
Eliminé advertencia mediante la adopción de la [textfild resignFirstResponder]; fuera de la
-(void)willAnimateFirstHalfOfRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
//if (keyboardIsPresent == YES) {[self.entryTextField resignFirstResponder];}
} y colocarlo de nuevo en la parte superior del código para el:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
if (keyboardIsPresent == YES) {
[self.entryTextField resignFirstResponder];
}
//Determine Which Orientation is Present:
if((fromInterfaceOrientation == UIInterfaceOrientationPortrait) || (fromInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)){
//LANDSCAPE VIEW:
[self configureLandscapeView];
}else {
//PORTRAIT VIEW:
[self configurePortraitView];
}
}
** Aunque no tenía ningún código dentro del - (void) willnimatFirstHalfOfRotationToInterface :, la advertencia aún estaba apareciendo. Creo que la advertencia aún estaba apareciendo porque el compilador todavía tiene que intentar el método mientras intenta ejecutar la primera animación y, por lo tanto, obtiene la llamada de animación doble o la superposición de recursos. No sabe que no hay un código ejecutable con el método hasta después de que se ejecuta. Y para ese momento ya reservó recursos en preparación para manejar posibles acciones dentro del método.
** Para elimitar la advertencia, tuve que eliminar o anular el código de willAnimateFirstHalfOfRotation, de modo que el compilador ni siquiera tiene que verificar si hay una posible segunda animación o acción que deba ejecutarse en al mismo tiempo.
/*-(void)willAnimateFirstHalfOfRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
//if (keyboardIsPresent == YES) {[self.entryTextField resignFirstResponder];}}*/
Después de que se complete la transición, dentro del bloque de animación original puedo comprobar para ver si el "keyboardIsPresent" era sí antes de la rotación, y si es así, renunciar a la primera respuesta una vez más.Yo uso setAnimationDuration:0.3
que sale bastante limpio y no nervioso.
El bounty es encontrar una solución utilizando apis públicas. –
Para ser más específicos, una solución a las advertencias de rotación de dos etapas presentadas al usar UIImagePickerController. –
aclaración: la intención es la diapositiva completa de la funcionalidad sin la molesta advertencia –