animationDidStop: закончен: метод делегата не вызывается

Я хочу запустить новую анимационную процедуру, как только завершится предыдущая. Однако, когда предыдущий завершается, новый не запускается, так как метод делегата не вызывается. Я делегировал контроллер представления для обработки анимации 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"];

}

Метод делегата не входит в консоль, так как его даже не вызывают.. Пожалуйста, помогите.

1 ответ

Решение

Положи это:

[buttonSlide setDelegate:self];

До:

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

Таким образом становится:

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

Должно сработать.

Надеюсь это поможет.

Другие вопросы по тегам