2010-11-03 9 views
5

Tengo un código que oscurece UIViews, al igual que cuando edita las pantallas de inicio de su iOS.iOS 4.2 Animación de bloques -> ¿Por qué recibo estas advertencias: - [UIApplication beginIgnoringInteractionEvents] overflow. Ignorando

que tienen los 2 siguientes métodos para lograr este efecto de oscilación:

- (void)wobble { 
int amountInRadians = (self.tag % 2) == 0 ? 2.0 : -2.0; 
containerView.transform = CGAffineTransformRotate(CGAffineTransformIdentity, RADIANS(-amountInRadians)); 

[UIView animateWithDuration:0.10 
     delay:0.0 
     options:(UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionRepeat | UIViewAnimationOptionAutoreverse) 
     animations:^ { 
     containerView.transform = CGAffineTransformRotate(CGAffineTransformIdentity, RADIANS(amountInRadians)); 
     } 
     completion:NULL 
]; 
} 

- (void)stopWobble { 
[UIView animateWithDuration:0.01 
     delay:0.0 
     options:(UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionCurveLinear) 
     animations:^ { 
     containerView.transform = CGAffineTransformIdentity; 
     } 
     completion:NULL 
    ]; 
} 

Cuando paro el tambaleo, me sale el aviso (muchas veces):

- [UIApplication beginIgnoringInteractionEvents] desbordamiento . Postergación.

entonces (muchas veces, el número de juego de los empezar):

- [UIApplication endIgnoringInteractionEvents] llama sin cumplir ninguna -beginIgnoringInteractionEvents. Postergación.

¿Qué diablos está pasando? Si hago un comentario de la animación stopWobble, está bien, pero, naturalmente, mis animaciones no se detienen. Si elimino la opción "UIViewAnimationOptionAllowUserInteraction" cuando comienzo la animación, aparece la advertencia beginIgnoringInteractionEvents, pero tampoco sirve porque tengo que interactuar con estas vistas mientras se bambolea.

El comportamiento funciona bien, ¿debería ignorar esto? Me parece algo que debería arreglar, si solo puedo descubrir qué lo causa.

Respuesta

11

Intenta agregar UIViewAnimationOptionAllowUserInteraction a stopWobble. He recibido ese mensaje de error anteriormente y parece tener que ver con dos animaciones que intentan ejecutar simultáneamente cuando no están explícitamente configuradas para hacerlo. Agregar UIViewAnimationOptionAllowUserInteraction a mi segunda animación me solucionó este problema.

+0

Agregar esta opción realmente detiene la salida de estas advertencias. Ahora necesitamos un experto para explicarlo en detalles. :) –

+0

Sí, eso lo solucionó. Gracias Eric! –

+0

Parece que no puedo deshacerme de estos mensajes. ¿Alguien tiene una idea de qué y cuándo se llaman? –

0

Supongo que sucede cuando tienes demasiadas vistas que se animarán al mismo tiempo, como una grilla de vistas personalizadas en viewDidAppear.

a. En iOS4 todos intentan desactivar las interacciones UIApplication al mismo tiempo y para evitar problemas, UIApplication se desborda e ignora algunos de ellos.

b. Después de animar todas las vistas, vuelva a decir UIApplication para habilitar las interacciones, pero UIApplication no reconoce algunas de las llamadas habilitadas, ya que se ignoraron en (a).

Cuestiones relacionadas