1

我有多组按钮,单击时会从其原始位置动画到其设定位置。对象动画后,我希望将其从超级视图中删除。

这是我的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 的讲座中了解到,在动画代码中,它完成了代码的执行,但它不会等待动画本身(在模拟器中投影)完成。

希望你能帮我解决这个问题。谢谢!

4

1 回答 1

1

检查标志的值(如果成功终止,则应为 YES);我有同样的问题(我认为),动画被立即删除(并且使用 flag=NO 调用 animationdidstop)并且永远不会终止(即使它继续显示)

我正在努力解决这个问题,可能与 ARC 有关(您在项目中使用 ARC 吗?)

于 2012-09-26T20:04:59.717 回答