我特林當動畫的啓動和停止,所以我的代碼是得到通知:爲什麼animationDidStart:不起作用?
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:)];
[UIView setAnimationWillStartSelector:@selector(animationDidStart:)];
我實現這些2種方法,但animationDidStop:finished:
得到了通知,並且animationDidStart:
沒有。
這裏是我的實現:
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag {
}
- (void)animationDidStart:(CAAnimation *)anim
{
}
當我試圖直接調用animationDidStart:
或animationDidStop:finished:
,我的應用程序崩潰,並報道說,選擇找不到。但根據CAAnimation.h中的以下幾行,如果我導入QuatzCore框架,NSObject的所有實例都應該響應這兩種方法。我的理解是否正確?
/* Delegate methods for CAAnimation. */
@interface NSObject (CAAnimationDelegate)
/* Called when the animation begins its active duration. */
- (void)animationDidStart:(CAAnimation *)anim;
/* Called when the animation either completes its active duration or
* is removed from the object it is attached to (i.e. the layer). 'flag'
* is true if the animation reached the end of its active duration
* without being removed. */
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag;
@end
我有點困惑。我認爲CAAnimationDelegate類別與NSObject記錄在: http://developer.apple.com/iphone/library/documentation/GraphicsImaging/Reference/CAAnimation_class/Introduction/Introduction.html#//apple_ref/occ/instm/NSObject/ animationDidStart: – 2010-07-28 16:51:27
關於術語的一個詞:'CAAnimation'不是一個「類別」,而是「NSObject」的「繼承」,它只是說實際上是一個對象。 'CAAnimationDelegate'是一個協議,它是一組規則,告訴你應該/可能提供哪些方法來建立一些交互。 – mvds 2010-07-28 17:36:41
@MQ顧:你是對的,我沒有足夠的時間進行研究,對不起!但它不會改變你的問題。 CAAnimation是一個抽象類,由UIView使用(實現)來執行他基本的動畫。你需要使用UIView定義的選擇器來使你的代碼工作。 – thatsdisgusting 2010-07-28 22:00:04