CATransition является подклассом CAAnimation, поэтому он наследует (среди прочего) свойство delegate
и метод делегата с именем animationDidStop:finished:
. Определите этот метод в любом классе, который вы хотите обработать, и установите свойство delegate
анимации для объекта этого класса. Когда анимация заканчивается, делегату отправляется сообщение animationDidStop:finished:
.
Например:
AnimationDelegate.m
@implementation AnimationDelegate
- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag
{
//Handle whatever needs to be done after the animation stops
}
ClassUsingAnimation.m
@implementation ClassUsingAnimation
{
AnimationDelegate *customDelegate = [[AnimationDelegate alloc] init];
CATransition *animation = [self getAnimation:dirString];
animation.delegate = customDelegate;
[[self view] exchangeSubviewAtIndex:0 withSubviewAtIndex:1];
[[[self view] layer] addAnimation:animation forKey:kAnimationKey];
[customDelegate release];
}