0

と呼ばれるメソッドをトリガーする UITapGestureRecognizer を含む UIView がありますhandleLeftTap

-(void)handleLeftTap {

    self.player.direction = LEFT;

    if(!self.isAnimating && self.toTile.isWalkable) {
        for(UIView *currentView in self.subviews) {
            CABasicAnimation *moveAnimation = [CABasicAnimation animationWithKeyPath:@"position"];
            [moveAnimation setDuration:MOVE_ANIMATION_DURATION];
            [moveAnimation setDelegate:self];
            [moveAnimation setRemovedOnCompletion:NO];
            [moveAnimation setFillMode:kCAFillModeForwards];
            moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(currentView.center.x+TILE_WIDTH, currentView.center.y)];
            [currentView.layer addAnimation:moveAnimation forKey:nil];
        }
        NSLog(@"animated\n");
    }
}

初めて画面をタップすると、このアニメーションは完璧に機能します。すべてのサブビューはTILE_WIDTHピクセル単位で右に移動します。ただし、画面をもう一度タップすると、アニメーションがまったく機能しません。ビューは移動しません。ブレークポイントを使用してこのコードをステップ実行し、このアニメーションがレイヤーに追加されていることを確認しました。アニメーションが適用されていないか、そのようなことだけです。これを修正する方法はありますか?

4

1 に答える 1