Vervollständigungsblock von uiview animate wird nie aufgerufen, wenn die Ansicht verschwindet

8

Ich bemerkte ein seltsames Verhalten. Wenn ich eine Animation starte und die Ansicht ändere (die Ansicht wird nicht gelöscht!), Wird der Completion-Handler nie aufgerufen.

%Vor%

Gibt es dafür eine Lösung?

    
bopa 30.01.2012, 11:47
quelle

4 Antworten

5

Ich weiß nicht, wo ich es schreiben soll, aber ich bekomme dasselbe, was Sie haben, aber in meinem Fall wurde der Completion Block manchmal aufgerufen. Es könnte dasselbe sein.
Ich habe herausgefunden, dass, wenn im Animationsblock nichts animiert wurde - zum Beispiel, wenn Sie alpha = 0 auf uiview setzen, also alpha bereits 0 ist, oder Sie setzen den Inhalts-Offset zu UIScrollView auf den gleichen Inhalt Offset (wie in meinem Fall) , der Completion-Block wurde nicht aufgerufen.

    
shem 23.01.2013 15:14
quelle
1

Setze dies in deinen Animationsblock und lege alles, was du machen willst, mit der YOUR_SELECTOR-Methode fertig. Sie können jetzt mit Ihrer Ansicht machen, was Sie wollen, und haben immer noch eine Möglichkeit, etwas nach Abschluss auszuführen!

%Vor%     
Aurelien Porte 27.01.2014 19:47
quelle
0

In meinem Fall hat die Ansicht, die ich animierte, ihren Rahmen auf (0, -568,320,568) und nach der Animation vergesse ich, den Rahmen an seine erforderliche Position zu ändern, dh (0,0320,568), so dass der Abschlussblock nicht aufgerufen wurde . Das Ändern des Rahmens der animierten Ansicht hat den Job für mich erledigt. So kann ich sagen, wenn zum Beispiel die Ansicht nichts zu zeigen hat (da der Rahmen nicht im sichtbaren Bereich eingestellt wurde). Der Abschlussblock darf nicht aufgerufen werden.

    
Muhammad Nayab 05.05.2016 13:50
quelle
-1

Bewegen Sie Ihren Aufruf vom [myView setHidden:YES] -Block zu animations in den completion -Block. Ich denke, das wird wahrscheinlich helfen. Sie können das Alpha von myView noch während des Blocks animation auf 0 setzen (wenn es ausgeblendet werden soll) oder vor dem gesamten Aufruf von -[UIView animateWithDuration:delay:options:animations:completion:] , wenn es sofort verschwinden soll.

    
Zev Eisenberg 29.04.2012 05:27
quelle

Tags und Links