1

containsPointメソッドを使用してヒットテストを実行するUIBezierPathがあります。UIGestureRecognizerDelegateメソッドshouldReceiveTouchを使用することで、実際のベジエパス上のタッチを検出し、パス外のタッチをレスポンダーチェーンに渡すことができます(これは望ましい動作です)。

これはタップで完全に機能しますが、shouldReceiveTouchはtouchesMovedイベントをカバーしていないため、継続的なジェスチャ、つまりパンに関しては問題が発生します。

UIGestureRecognizerDelegateメソッドgestureRecognizerShouldBeginを使用して、継続的なジェスチャ全体をブロックできますが、ジェスチャは次のレスポンダーに渡されません。

UIGestureRecognizerをサブクラス化してtouchesMovedを取得し、shouldReceiveTouchを呼び出す方法はありますか?または、パスをクリップすることでこれを実現できますか?これにより、クリップされた領域の外側でイベントが渡されることもありますか?

ありがとう

4

1 に答える 1

0

ベジエ パスを描画する UIView サブクラスで pointInside:withEvent をオーバーライドすることになりました。このようにして、個別のジェスチャーと継続的なジェスチャーの両方を処理し、イベントをスーパービューに転送できます。

于 2013-02-20T20:36:37.680 に答える