1

UIPinchGestureRecognizer アクションを一度だけ起動することは可能ですか?

ユーザーがピンチ (実際には拡散) してアクションを実行できるようにしたいのですが、このメソッドは常に呼び出されますが、これは UIPinchGestureRecognizer の機能であると理解しています。

以下の回答を使用して更新されたコード(ズームを検出するだけ):

-(void) handlePinchGesture: (UIPinchGestureRecognizer *) sender {
    if (sender.state == UIGestureRecognizerStateBegan) {
        self.startingScale = sender.scale;
    }
    if (sender.state == UIGestureRecognizerStateEnded) {
        if (sender.scale > self.startingScale) {
            [self zoomIn];
        }
    }
}
4

1 に答える 1

6

Gesture Recognizer はステート マシンであり、どの状態をリッスンするかを指定しない場合は、ジェスチャからセレクターを呼び出すだけで、ボード全体のあらゆる状態に対して起動します。

ジェスチャの開始時に検出を制限するには、次を使用できます。

- (void)myGestureRecognized:(UIGestureRecognizer*)sender
{
    if (sender.state == UIGestureRecognizerStateBegan) {
        //do something
    }
}

その他の認識状態には次のものがあります。

typedef enum {
   UIGestureRecognizerStatePossible,

   UIGestureRecognizerStateBegan,
   UIGestureRecognizerStateChanged,
   UIGestureRecognizerStateEnded,
   UIGestureRecognizerStateCancelled,

   UIGestureRecognizerStateFailed,

   UIGestureRecognizerStateRecognized = UIGestureRecognizerStateEnded
} UIGestureRecognizerState;
于 2012-09-11T20:05:57.770 に答える