短い
UIScrollView のスワイプが、垂直スワイプと見なされるのに十分な大きさの Y デルタを作成し、ネストされた UIScrollView (UIWebView) で処理できるようにするかどうかを制御するにはどうすればよいですか?
長いです
水平にページを表示する UIScrollView があります。「ページ」は UIWebView (UIScrollView を含む) であり、垂直方向にのみスクロールします。これが期待どおりに機能するように、コンテンツのサイズはすべて適切に設定されています。
ただし、横方向に速くスワイプしようとすると、わずかに斜めにスワイプする可能性が高いことに気付きました。それがほんの少しの場合、スクロールビューは私が望むようにそれを処理しますが、ネストされたスクロールビュー (UIWebView) にスワイプを垂直方向のスワイプとして認識させるには Y デルタで十分ですが、X デルタを考慮することができます水平スワイプを示すのに十分な大きさ。
標準の UIResponder タッチ メソッド (例: ) をオーバーライドする必要があることを説明する古い記事をたくさん見つけましたがtouchesBegan:withEvent:
、最近ではこれはすべてジェスチャ レコグナイザーによって処理されます。
では、ページング スクロールビューのパン ジェスチャ レコグナイザーに影響を与えて、水平スワイプの Y デルタを増やすにはどうすればよいでしょうか?
必要に応じて機能させる1つの方法は、次のとおりです。
delaysContentTouches
ページングスクロールビューの設定NO
- ネストされたスクロールビューのパン ジェスチャ レコグナイザーに、ページング スクロールビューのパン ジェスチャ レコグナイザーへの依存関係を追加して失敗します。
ただし、これにより、ネストされたスクロールビューの垂直スクロールが中断され、スワイプが終了して高速になるまで認識されなくなります。これは、ページング スクロールビューのパン ジェスチャ認識機能が、タッチが終了するまで失敗しないためだと思われます。