2010-11-03 5 views
5

Ich habe etwas Code, der UIViews wackelt, ähnlich wie wenn Sie Ihre iOS-Startbildschirme bearbeiten.iOS 4.2 Block Animation -> Warum bekomme ich diese Warnungen: - [UIApplication BeginIgnoringInteractionEvents] Überlauf. Ignorieren

Ich habe die 2 folgenden Methoden, um diese Wobble-Effekt zu erzielen:

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

Wenn ich die Wobble stoppen, erhalte ich die Warnung (Vielfaches):

- [UIApplication beginIgnoringInteractionEvents] Überlauf . Ignorieren.

dann (ein Vielfaches, passende Anzahl von beginnen sind):

- [UIApplication endIgnoringInteractionEvents] genannt ohne -beginIgnoringInteractionEvents entsprechen. Ignorieren.

Was ist los? Wenn ich die StopWobble-Animation auskommentiere, ist das in Ordnung, aber natürlich hören meine Animationen nicht auf. Wenn ich die Option "UIViewAnimationOptionAllowUserInteraction" beim Starten der Animation entferne, erhalte ich die Warnung beginIgnoringInteractionEvents, aber das ist auch nicht gut, weil ich mit diesen Ansichten interagieren muss, während sie wackeln.

Das Verhalten funktioniert gut, sollte ich das einfach ignorieren? Scheint mir wie etwas, das ich beheben sollte, wenn ich nur herausfinden kann, was es verursacht.

Antwort

11

Versuchen Sie, UIViewAnimationOptionAllowUserInteraction zu stopWobble hinzuzufügen. Ich habe diese Fehlermeldung schon einmal erhalten und sie scheint mit zwei Animationen zu tun zu haben, die versuchen, gleichzeitig auszuführen, wenn sie nicht explizit dafür eingestellt sind. Das Hinzufügen von UIViewAnimationOptionAllowUserInteraction zu meiner zweiten Animation hat dieses Problem für mich behoben.

+0

Das Hinzufügen dieser Option stoppt die Ausgabe dieser Warnungen. Jetzt brauchen wir einen Experten, um es im Detail zu erklären. :) –

+0

Ja, das hat es behoben. Danke Eric! –

+0

Ich kann diese Nachrichten nicht loswerden. Hat jemand eine Idee was und wann sie heißen? –

0

Ich denke, es passiert, wenn Sie zu viele Ansichten haben, die zur gleichen Zeit animiert werden, wie ein Raster von benutzerdefinierten Ansichten in ViewDidAppear.

a. Unter iOS4 versuchen alle, die UIApplication-Interaktionen gleichzeitig zu deaktivieren und Probleme zu vermeiden, die UIApplication überläuft und einige davon ignoriert.

b. Nach dem Animieren aller Ansichten wird UIApplication erneut angewiesen, Interaktionen zu aktivieren, aber UIApplication erkennt einige der Aktivierungsaufrufe nicht, da sie in (a) ignoriert wurden.

Verwandte Themen