Я пытаюсь вызвать метод всякий раз, когда заканчивается эта анимация, но в некоторых случаях, например, когда пользователь покидает приложение, его блок завершения никогда не вызывается. Также, когда VC появляется с его анимацией одновременно с анимацией UIView, блок завершения никогда не вызывается.Блок завершения анимации UIView не вызывается, когда анимация прерывается
Что делать, чтобы вызвать обратный вызов, даже если анимация прервана? Должен ли я вообще не использовать блок завершения анимации UIView и вместо этого использовать что-то другое? Пожалуйста, просветите меня ..!
-(void)action {
[UIView animateWithDuration:0.3
delay:0.0
options:UIViewAnimationOptionCurveEaseOut
animations:^{
self.doorLeft.frame = CGRectMake(0, 0, self.doorLeft.frame.size.width, self.doorLeft.frame.size.height);
self.doorRight.frame = CGRectMake(self.frame.size.width -self.doorRight.frame.size.width, 0, self.doorRight.frame.size.width, self.doorRight.frame.size.height);
} completion:^(BOOL finished){
if (finished) {
switch (self.type) {
case 0:
[self.delegate startTOship];
break;
case 1:
[self.delegate gameTOship];
break;
case 2:
[self.delegate shipTOgame];
break;
case 3:
[self.delegate shipTOmap];
break;
case 4:
[self.delegate gameTOmap];
break;
case 5:
[self.delegate mapTOgame];
break;
case 6:
[self.delegate mapTOship];
break;
}
[UIView animateWithDuration:0.3
delay:0.5
options:UIViewAnimationOptionCurveEaseOut
animations:^{
self.doorLeft.frame = CGRectMake(-self.doorLeft.frame.size.width, 0, self.doorLeft.frame.size.width, self.doorLeft.frame.size.height);
self.doorRight.frame = CGRectMake(self.doorRight.frame.size.width *2, 0, self.doorRight.frame.size.width, self.doorRight.frame.size.height);
} completion:^(BOOL finished){
if (finished) {
[self actionEnded];
}
}
];
}
}
];}
Хммм, если у меня есть «цепная» анимация, которая имеет несколько анимаций один за другим, как в моем отредактированном вопросе? – durazno
Затем добавьте блок фиксации после последнего кода анимации. – Tander
Хмм, но я думаю, что мне придется пойти с CAKeyframeAnimation, потому что то, что я делаю, нуждается именно в этом. CAKeyframeAnimation также гарантирует, что его блок завершения вызывается немедленно, когда анимация прерывается или мне нужно использовать ее вместе с CATransition ..? – durazno