8
votes

Bloc d'achèvement d'UIView Animate n'a jamais appelé si la vue disparaît

J'ai remarqué un comportement étrange. Lorsque je démarre une animation et changez de vue (la vue ne sera pas rejetée!), Le gestionnaire d'achèvement jamais appelé. xxx

existe une solution pour cela?


0 commentaires

4 Réponses :


-1
votes

Déplacez votre appel à [MyView sethidden: Oui] à partir des animations BLOCK dans le bloc COUVERTOIRE BLOC. Je pense que cela aidera probablement. Vous pouvez toujours définir l'alpha de MyView à 0 pendant le bloc Animation (si vous voulez que cela s'effondre), ou avant l'intégralité de l'appel sur - [uIView AnimateDaturation: Délai: Options: Animations: Achèvement:] Si vous voulez que cela disparaisse tout de suite.


0 commentaires

5
votes

Je ne sais pas où l'écrire, mais je reçois la même chose que vous avez, mais dans mon cas, le bloc d'achèvement était parfois appelé. Ce pourrait être la même chose.
J'ai découvert que si dans le bloc d'animation n'a rien été animé, par exemple, si vous définissez Alpha = 0 sur UIView, Alpha est déjà 0 ou que vous définissez le contenu du contenu sur UiscrollView sur le même content de contenu (comme dans mon cas). , le bloc d'achèvement n'est pas appelé.


0 commentaires

1
votes

Mettez ceci dans votre bloc d'animation et mettez tout ce que vous souhaitez faire à la fin de votre méthode_selector. Vous pouvez maintenant faire ce que vous voulez avec votre vue et avoir toujours un moyen d'exécuter quelque chose à l'achèvement!

[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(YOUR_SELECTOR)];


0 commentaires

0
votes

Dans mon cas, la vue que j'étais animée a son cadre réglé sur (0, -568,320 568) et après l'animation, j'oublie de changer le cadre à sa position requise, c'est-à-dire (0,0,320 568), le bloc d'achèvement n'a donc pas été appelé. . Changer le cadre de la vue animée a fait le travail pour moi. Donc, je peux dire si, par exemple, la vue n'a rien à montrer (comme le cadre n'était pas défini dans une région visible). Le bloc d'achèvement peut ne pas appeler.


0 commentaires