デフォルトで 2 本の指を使用する UIPinchGestureRecognizer を使用しています。ユーザーがマルチタスク ジェスチャの実行を決定すると、ピンチ ジェスチャ アクションもアクティブになります。
4 つ以上の UITouch インスタンスが検出された場合、ピンチ ジェスチャの発生をキャンセルする方法はありますか?
編集 間違ったアプローチだったので、サンプル コードを削除しました。
デフォルトで 2 本の指を使用する UIPinchGestureRecognizer を使用しています。ユーザーがマルチタスク ジェスチャの実行を決定すると、ピンチ ジェスチャ アクションもアクティブになります。
4 つ以上の UITouch インスタンスが検出された場合、ピンチ ジェスチャの発生をキャンセルする方法はありますか?
編集 間違ったアプローチだったので、サンプル コードを削除しました。
UIPinchGestureRecognizerをサブクラス化していないため、を使用しないでくださいtouchBegan:withEvent:
。代わりに、ピンチが発生したときに呼び出されるメソッドで処理する必要があります。
- (void)handlePinch:(UIPinchGestureRecognizer *)pinchGestureRecognizer
{
// if there are 2 fingers being used
if ([pinchGestureRecognizer numberOfTouches] == 2) {
// do stuff
}
}
マルチタスク ジェスチャでは、一部のタッチが無視されるため、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;
}
}