クリックすると、元の位置から設定された位置に移動するボタンのセットが複数あります。オブジェクトがアニメーション化した後、スーパービューから削除したいです。
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 の講義で、アニメーション コードではコードの実行が終了するが、アニメーション自体 (シミュレーターに投影されたもの) が終了するのを待たないことを学びました。
これで私を助けてくれることを願っています。ありがとう!