我有多组按钮,当点击时,从其原始位置动画到其设定位置。在对象动画后,我希望它从superview中删除。
这是我的animationDidStop代码:
- (void) animationDidStop:(SKBounceAnimation *)animation finished:(BOOL)flag {
[self.cellImageViewGlobal removeFromSuperview];
NSLog(@"Animation didStop called");
}
因此,当我单击一个按钮(self.cellImageViewGlobal)时,它将设置动画,然后在动画之后,它将从superview中删除。在进行点击或点击我将进行,self.cellImageViewGlobal将不会从superview中删除。我发现这个函数只通过我的日志调用一次。
我将自己设置为viewDidLoad中的委托:
- (void)viewDidLoad
{
[super viewDidLoad];
self.animateProduct.delegate = self; // animateProduct is the last animation being called in the CAAanimationGroup array
}
我还在动画功能中设置了这个委托。 我的代码似乎没有问题。我想每次我都会点击一个按钮,动画结束后它会调用“animationDidStop”函数。
顺便说一下,我尝试了多种方法或解决方案来解决它。首先是我使用了块。块中的动画完成后,将执行以下操作:
completion:^(BOOL finished){
[self.cellImageViewGlobal removeFromSuperview];
}
但是这段代码不会等待模拟器中的动画完成。我在Paul Hegarty的讲座中了解到,在动画代码中,它完成了代码的执行,但它不会等待动画本身(在模拟器中投影)完成。
希望你能帮助我。谢谢!
答案 0 :(得分:1)
检查flag的值(如果成功终止则应为YES);我有同样的问题(我认为),动画会被立即删除(并且使用flag = NO调用animationdidstop)并且永远不会终止(即使它继续显示)
我正在努力解决这个问题,可能与ARC有关(你在项目中使用ARC吗?)