0

デフォルトで 2 本の指を使用する UIPinchGestureRecognizer を使用しています。ユーザーがマルチタスク ジェスチャの実行を決定すると、ピンチ ジェスチャ アクションもアクティブになります。

4 つ以上の UITouch インスタンスが検出された場合、ピンチ ジェスチャの発生をキャンセルする方法はありますか?

編集 間違ったアプローチだったので、サンプル コードを削除しました。

4

2 に答える 2

0

UIPinchGestureRecognizerをサブクラス化していないため、を使用しないでくださいtouchBegan:withEvent:。代わりに、ピンチが発生したときに呼び出されるメソッドで処理する必要があります。

- (void)handlePinch:(UIPinchGestureRecognizer *)pinchGestureRecognizer
{
    // if there are 2 fingers being used
    if ([pinchGestureRecognizer numberOfTouches] == 2) {
        // do stuff
    }
}
于 2013-03-22T15:07:15.080 に答える
0

マルチタスク ジェスチャでは、一部のタッチが無視されるため、numberOfTouchesによって返されるUIPinchGestureRecognizerは 4 または 5 ではなく 2 です。

イベントに 4 回または 5 回のタッチがある場合は、サブクラス化UIPinchGestureRecognizerしてオーバーライドし、レコグナイザーをキャンセルできます。ignoreTouch:forEvent

- (void) ignoreTouch:(UITouch*)touch forEvent:(UIEvent*)event
{
    [super ignoreTouch:touch forEvent:event];

    // Cancel recognizer during a multitask gesture
    if ([[event allTouches] count] > 3)
    {
        self.state = UIGestureRecognizerStateCancelled;
    }
}
于 2014-11-12T11:20:45.603 に答える