4

私は使用しUILongPressGestureRecognizerていますが、指1本を使用すると正常に動作します。2 本目の指を置くと、これはレコグナイザーによってキャプチャされず、delegate呼び出され続けますが、最初のタッチでのみ、[recognizer numberOfTouches]常に 1 になります。

[recognizer setNumberOfTouchesRequired:2]これもちゃんと動くように設定すると、[recognizer numberOfTouches]指を2本同時に置いたときに=2になります。

私の結論は次のとおりです。 aUILongPressGestureが認識されて開始された後、2 回目のタッチで変更されることはありません。これは予想される動作ですか?

4

1 に答える 1

0

2 つの異なる UILongPressGestureRecognizers を追加できます。1 つは = 1 でセットアップされ、もうnumberOfTouchesRequired1 つは = 2 でセットアップされます。また、おそらく、1 本の指のみを想定するものは、もう一方の指を認識した場合に失敗する必要があります (ユーザーが 1 本の指でタップし、すぐに別の指を置いた後)。

次のようになります。

UILongPressGestureRecognizer *oneFingerLongPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(oneFingerLongPressed:)];
oneFingerLongPressGesture.numberOfTouchesRequired = 1;

UILongPressGestureRecognizer *twoFingersLongPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(twoFingersLongPressed:)];
twoFingersLongPressGesture.numberOfTouchesRequired = 2;

[oneFingerLongPressGesture requireGestureRecognizerToFail:twoFingersLongPressGesture];

UIView *someView;

[someView addGestureRecognizer:oneFingerLongPressGesture];
[someView addGestureRecognizer:twoFingersLongPressGesture];

[oneFingerLongPressGesture release];
[twoFingersLongPressGesture release];
于 2012-06-01T20:17:07.290 に答える