2

ブロックベースのアニメーションのオプションフィールドを使用して、アニメーション中にユーザーがビューを操作できるようにするのは非常に簡単です。しかし、私のプログラムでは CAKeyframeAnimation を使用していますが、ユーザー操作を有効にするためのプロパティが表示されません。これを行う方法はありますか?

ありがとう、

編集:実際のコードは次のとおりです。

- (void)move
{
    CGMutablePathRef path = CGPathCreateMutable();
    CGPathMoveToPoint(path, NULL, 50, 120);
    for (int i = 0; i < 5; i ++)
        CGPathAddLineToPoint(path, NULL, arc4random() % 320, arc4random() % 480);
    CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
    [animation setPath:path];
    [animation setDuration:10];
    CFRelease(path);
    [self.layer addAnimation:animation forKey:@"move"];
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self setAlpha:0];
}
4

2 に答える 2

1

ほとんどの場合、間違った場所に触れています。レイヤーが画面上でアニメーション化されるとき、値は決して変化しないため、ビューは実際には、画面に表示される場所ではなく、最初からあった場所に配置されます。

数か月前に、テスト アニメーション レイヤーをヒットする方法についてのブログ投稿を行いました。それはあなたがやろうとしていることを正確に説明しています。

タッチ処理 (またはジェスチャ認識機能) をスーパービューに追加し、presentationLayer自分自身のヒット テストを行って、ビューが画面に表示された場所をユーザーがタップしたかどうかを判断する必要があります。

于 2012-06-19T23:14:27.147 に答える