我有多组按钮,单击时会从其原始位置动画到其设定位置。对象动画后,我希望将其从超级视图中删除。
这是我的animationDidStop代码:
- (void) animationDidStop:(SKBounceAnimation *)animation finished:(BOOL)flag {
[self.cellImageViewGlobal removeFromSuperview];
NSLog(@"Animation didStop called");
}
所以当我点击一个按钮(即self.cellImageViewGlobal)时,它会动画,然后在动画之后,它将从superview中删除。在接下来的单击或点击中,self.cellImageViewGlobal 不会从超级视图中删除。我发现这个函数只通过我的日志调用一次。
我在 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 的讲座中了解到,在动画代码中,它完成了代码的执行,但它不会等待动画本身(在模拟器中投影)完成。
希望你能帮我解决这个问题。谢谢!