2011-02-18 9 views
6

Odio publicar esto pero estoy viendo una animación no deseada en una aplicación de iPhone en la que estoy trabajando. Nunca he visto esto antes en mis aplicaciones o en otras aplicaciones.Animación no deseada extraña que ocurre en la aplicación de iPhone

Esta aplicación es para iOS 4.2 y para iPhones solamente. La rareza está sucediendo incluso en un iPhone4.

Ejemplos:

  • Cuando la aplicación en cuestión pone en marcha un UIAlertView, que "vuela por la izquierda superior o superior."

  • Cuando se desplaza cualquier UITableView, los datos de celda nuevos (estándar) "se expanden desde la izquierda de la celda" cuando aparecen por primera vez y se llenan.

  • Cuando un UITextField tiene texto ingresado, el tipeo es lento y puede ver el cursor deslizarse a la derecha sobre la nueva letra. Si hay un botón "borrar" en el UITextField, se desliza desde el lado izquierdo al UITextField se ingresa por primera vez.

  • Cuando se está desplazando un UIPickerView, al desplazarse a una fila recién visualizada está "volando" la nueva fila de datos desde la esquina superior izquierda.

El comportamiento general es como al viejo viejo viejo Apple II + básico en el que podría establecer "velocidad = 20" y "lento" el ordenador.

Lo que sé: Esto está sucediendo en varios teléfonos (4 y 3G). No sucede en mis otras aplicaciones. No sucede en otras aplicaciones en general. Parece ser consistente en toda la aplicación. Este no es un proyecto pequeño, así que no estoy seguro exactamente cuándo comenzó, pero no comenzó con este comportamiento. No hay animación asociada con los elementos mencionados. El problema parece estar afectando todo en la aplicación.

Incluso hay un ejemplo de una aplicación de código de pie independiente, que cuando se integra en esta aplicación de prblem, muestra los mismos problemas.

¿Alguien ha visto tal comportamiento anteriormente? No soy el único desarrollador, ¿hay alguna configuración posible que alguien más pueda establecer que cause esto?

Respuesta

10

Parece que está dejando las animaciones de UIView sin terminar. Si comienza una animación pero nunca la termina, todas las manipulaciones de UIView después de ese punto serán animadas, tal como lo describe. La parte extraña es que pensé que UIKit los terminaría por ti (y registraría un mensaje) si el control volvía al runloop con un bloque de animación abierto. O eso ya no sucede, o estás constantemente comenzando nuevos bloques de animación.

Debe revisar su código para todas las instancias de +[UIView beginAnimations:context:] y asegurarse de que todas estén balanceadas por un +[UIView commitAnimations] correspondiente.

+0

¡Ese era el problema! ¡Muchas gracias! Había una sección de código aún no completada que tenía un contexto beginAnimations: without a commitAnimations. Es una sección de baja prioridad por lo que no estaba recibiendo mucha atención en el proyecto en este momento. – dredful

+2

@dredful: me parece útil terminar siempre esas secciones en el momento en que las comienzas, antes de escribir el código que contiene. –

+0

hombre tan útil ... gracias –

Cuestiones relacionadas