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.
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%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.
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.
Tags und Links iphone ios uiview uiviewanimation