簡體   English   中英

animationDidStop:完成:未調用委托方法

[英]animationDidStop: finished: delegate method not getting called

我想在上一個動畫完成后立即開始一個新的動畫例程。 但是,當前一個確實完成時,由於未調用委托方法,因此不會觸發新的。 我委托了一個視圖控制器來處理按鈕CALayer的動畫。 “ buttonSlide”是上一個動畫,而“ buttonFade”是新的動畫。 這是代碼段:

-(void)viewWillAppear:(BOOL)animated{

NSLog(@"TimeView appearing...");
[super viewWillAppear:animated];
[self pressButton:nil]; // Shows current time as soon as TimeView appears

//    Silver challenge
CABasicAnimation *buttonSlide= [CABasicAnimation animationWithKeyPath:@"position"];
[buttonSlide setFromValue:[NSValue valueWithCGPoint:CGPointMake(320, 191+15)]];
[buttonSlide setToValue:[NSValue valueWithCGPoint:CGPointMake(160, 191+15)]];
[buttonSlide setDuration:.12];

[button.layer addAnimation:buttonSlide forKey:@"buttonSlide"];

[buttonSlide setDelegate:self];

CABasicAnimation *buttonFade= [CABasicAnimation animationWithKeyPath:@"opacity"];
[buttonFade setFromValue:[NSNumber numberWithFloat:.2]];
[buttonFade setToValue:[NSNumber numberWithFloat:1]];
[buttonFade setDuration:10];


}

-(void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{
  NSLog(@"%@ finshed: %d",anim,flag);
  CAAnimation *buttonFade= [button.layer animationForKey:@"opacity"];
  [button.layer addAnimation:buttonFade forKey:@"buttonFade"];

}

委托方法沒有登錄到控制台,因為它甚至沒有被調用。請提供幫助。

把這個:

[buttonSlide setDelegate:self];

之前:

[button.layer addAnimation:buttonSlide forKey:@"buttonSlide"];

因此變為:

[buttonSlide setDelegate:self];
[button.layer addAnimation:buttonSlide forKey:@"buttonSlide"];

會工作。

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM