7
hitTest:withEventを使用して、スーパービューのフレームの外側にあるサブビューにタッチをキャプチャする:
私の問題:EditView基本的にアプリケーションフレーム全体を占めるスーパービューとMenuView、下部〜20%だけを占めるMenuViewサブビューがButtonViewあり、実際にはMenuViewの境界外にある独自のサブビューが含まれています(このようなもの:)ButtonView.frame.origin.y = -100。 (注:のビュー階層のEditView一部ではない他のサブビューMenuViewがありますが、回答に影響する可能性があります。) あなたはおそらくすでに問題を知っています:ButtonViewがの範囲内にある場合MenuView(または、より具体的には、私のタッチがの範囲内にある場合MenuView)ButtonViewは、タッチイベントに応答します。タッチがMenuViewの範囲外(ただしButtonViewの範囲内)にある場合、はタッチイベントを受け取りませんButtonView。 例: (E)is EditView、すべてのビューの親 (M)is MenuView、EditViewのサブビュー (B)is ButtonView、MenuViewのサブビュー 図: +------------------------------+ |E | | | | | | | | | |+-----+ | ||B | | |+-----+ | |+----------------------------+| ||M || || || |+----------------------------+| +------------------------------+ (B)は(M)のフレームの外にあるため、(B)領域のタップは(M)に送信されません-実際、(M)はこの場合タッチを分析せず、タッチは階層内の次のオブジェクト。 目標:オーバーライドhitTest:withEvent:することでこの問題を解決できることを確認しましたが、正確な方法がわかりません。私の場合、(私の「マスター」スーパービュー)hitTest:withEvent:でオーバーライドする必要がありEditViewますか?またはそれをオーバーライドする必要がありますMenuView、タッチを受け取らないボタンの直接のスーパービューでがありますか?それとも私はこれについて間違って考えていますか? これに長い説明が必要な場合は、優れたオンラインリソースが役立ちます。ただし、AppleのUIViewのドキュメントは例外で、私には明確にされていません。 ありがとう!