2010-11-03 4 views
5

Ho un codice che oscilla UIViews, proprio come quando si modificano le schermate iniziali iOS.iOS 4.2 Animazione blocco -> Perché ottengo questi avvisi: - [UIApplication beginIgnoringInteractionEvents] overflow. Ignorando

Ho le seguenti 2 metodi per ottenere questo effetto oscillazione:

- (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 
    ]; 
} 

Quando mi fermo l'oscillazione, ottengo l'avvertimento (più volte):

- [UIApplication beginIgnoringInteractionEvents] trabocco . Ignorando.

poi (più volte, corrispondente numero di quelli iniziare):

- [UIApplication endIgnoringInteractionEvents] chiamato senza corrispondenza -beginIgnoringInteractionEvents. Ignorando.

Cosa diavolo sta succedendo? Se commento l'animazione stopWobble, va bene, ma naturalmente le mie animazioni non si fermano. Se rimuovo l'opzione "UIViewAnimationOptionAllowUserInteraction" quando inizio l'animazione, ricevo l'avviso beginIgnoringInteractionEvents, ma non va bene perché ho bisogno di interagire con queste viste mentre oscillano.

Il comportamento funziona correttamente, quindi dovrei ignorarlo? Mi sembra una cosa che dovrei aggiustare, se solo riesco a scoprire cosa lo causa.

risposta

11

Prova ad aggiungere UIViewAnimationOptionAllowUserInteraction a stopWobble. Ho ricevuto il messaggio di errore in precedenza e sembra che abbia a che fare con due animazioni che cercano di eseguire simultaneamente quando non sono impostate esplicitamente per farlo. L'aggiunta di UIViewAnimationOptionAllowUserInteraction alla mia seconda animazione ha risolto il problema per me.

+0

L'aggiunta di questa opzione interrompe realmente l'emissione di questi avvisi. Ora abbiamo bisogno di un esperto per spiegarlo nei dettagli. :) –

+0

Sì, questo l'ha corretto. Grazie Eric! –

+0

Non riesco a liberarmi di questi messaggi. Qualcuno ha un'idea di cosa e quando vengono chiamati? –

0

Immagino che accada quando ci sono troppe viste che verranno animate contemporaneamente, come una griglia di viste personalizzate in viewDidAppear.

a. Sotto iOS4 tutti cercano di disabilitare le interazioni di UIApplication allo stesso tempo e per evitare problemi, UIApplication overflow e ignora alcuni di essi.

b. Dopo l'animazione di tutte le viste, viene nuovamente visualizzata l'applicazione UIA per abilitare le interazioni, ma l'applicazione UIA non riconosce alcune delle chiamate di abilitazione in quanto sono state ignorate in (a).

Problemi correlati