内部にいくつかのコンテンツビューを持つカスタム UIScrollView サブクラスがあります。それらのいくつかには、UITapGestureRecogniser があります。スクロール ビューがスクロールしていない場合、すべて正常に動作します。ただし、コンテンツ ビューをスクロールすると、タップ アクションは受信されません。スクロールビューがスクロールしているときにサブビューでタップアクションを処理する最も簡単なソリューションは何ですか?
詳細:
MyScrollView
横にスクロールします。多くのコンテンツ ビュー (例MyContentView
) が含まれています。それぞれMyContentView
の幅は幅の約 3 分の 1MyScrollView
です。したがって、一度に表示MyContentView
される要素は約 3 ~ 4 個です。の主な動作MyScrollView
は、1) スクロール後にMyContentView
要素の 1 つが画面の中央にあることを確認し、2)MyContentView
ユーザーがタップした場合に中央にスクロールすることです。したがって、私が得たい主な答えは、減速MyContentView
中にタップアクションの処理を「適切に」実装する方法です。MyScrollView
同じ質問と回答をいくつか見つけましたが、満足できるものはありませんでした。gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:
UITapGestureRecogniser デリゲートを実装するのが最善でした。しかし、この場合、私は時々(タップするときに、smaaaalドラッグして指を離すと、タップが鋼鉄で認識できるようになります(準タップと呼びます))、タップイベントとスクロールイベントの両方があり、スクロールビューがスクロールしていなくてもバグが発生しますタップを開始すると。ユーザーが準タップを行うと、アプリケーションはタップされた要素にスクロールしようとしMyContentView
、すぐに通常のスクロールを処理します。タップを処理した後に他の機能が実行を開始するため、さらにひどいようです(通常のスクロール時には実行してはなりません)。
スクロールビューがタップイベントではないと判断するのに十分なだけ待ってからスクロールするソリューションが必要です。それ以外の場合、タップ イベントがスクロールを認識した場合は、スクロールが発生してはなりません。