2012-09-20 53 views
1

我有多組按鈕,當點擊按鈕時,它會從原始位置移動到其設定位置。對象動畫後,我希望它從超級視圖中刪除。CAAnimation的「animationDidStop:」只能調用一次

這裏是我的animationDidStop代碼:

- (void) animationDidStop:(SKBounceAnimation *)animation finished:(BOOL)flag { 
     [self.cellImageViewGlobal removeFromSuperview]; 
     NSLog(@"Animation didStop called"); 
} 

所以,當我點擊了一個按鈕(這是self.cellImageViewGlobal),將動畫,那麼動畫之後,它會從上海華刪除。在繼續點擊或點擊我會做,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的演講中瞭解到,在動畫代碼中,它完成了代碼的執行,但它不會等待動畫本身(投影到模擬器中)完成。

希望你能幫助我。謝謝!

回答

1

檢查標誌值(如果成功終止,應該爲YES);我有同樣的問題(我認爲),動畫立即刪除(和animationdidstop被稱爲標誌=否),並且不會終止(即使它繼續顯示)

我正在努力解決這個問題,可能與ARC有關(你在你的項目中使用ARC嗎?)

+0

我在我的項目中使用了ARC。在我的塊中的動畫完成後,我可以通過使用alpha來解決它。動畫仍然出現,但它隱藏。這解決了我的問題,雖然它只是隱藏的。我似乎無法解決它,當我使用didAnimationStop方法。順便你的項目祝你好運。感謝您給我解決方案。可能我下次可以使用它! – angelmacaraig

+0

完成:^(完成BOOL){cellImageView.alpha = 0.0000000000000000000001; [cellImageView removeFromSuperview]; }]; //這是我的代碼 – angelmacaraig