次のようにレイアウトされたビュー階層があります。
parentView
scrollView
contentViewA
containerView
contentViewB
contentViewC
contentViewBがタッチに応答するようにしたい。残念ながら、scrollViewはタッチ自体を取り込もうとするため、これをほぼ不可能にし、contentViewBのタッチ応答をむらにします。
したがって、代わりに、parentView内のすべてのタッチをインターセプトし、contentViewBを直接操作してから、そのタッチをscrollViewに渡して、その処理を実行できるようにします。
誰かがこれをやってのける正しい方法を教えてもらえますか?
前もって感謝します。
乾杯、ダグ
アップデート:
もう少し掘り下げてみたところ、不思議に機能しているように見えるプロパティcanCancelContentTouchesが見つかりました。IBを使用しているので、IBの[キャンセル可能なコンテンツタッチ]のチェックを外しました。これは、スクロールビュー属性インスペクターの最初のタブです。これで、アプリを実行すると、タッチがcontentViewBに確実に到達しているように見えます。
UIScrollViewドキュメントでこのプロパティを説明する方法は次のとおりです。
ディスカッションこのプロパティの値がYESで、コンテンツ内のビューがそれに触れている指の追跡を開始し、ユーザーが指をドラッグしてスクロールを開始した場合、ビューはtouchesCancelled:withEvent:メッセージを受け取り、スクロールビューはハンドルを処理しますスクロールとしてのタッチ。このプロパティの値がNOの場合、コンテンツビューが追跡を開始すると、指の動きに関係なくスクロールビューはスクロールしません。
かなり不透明ですね とにかく、それはうまくいくようです。