テキスト ビューを含むビューで、hitTest:
メソッドをオーバーライドして return にしself
ます。その後、マウス イベントがコンテナー ビューに送信されます。
警告
それ以来、ウィンドウ内の任意の場所hitTest:
でクリックおよびマウス トラッキング イベントが呼び出されることを発見しました。これは、コンテナ ビューの近くには本来存在しないイベントであっても同様です。ウィンドウに他のビューがある場合、メソッドはコンテナー ビューをブラック ホールに変えます。これにより、それらのすべてのイベントがそれ自体に引き寄せられ、他のビューからは決して見えなくなります。hitTest:
そのための修正は、イベントを飲み込む前に、イベントがビュー内にあるかどうかをテストすることです。そうであれば、戻りself
ます。そうでない場合は、を返しnil
ます。
これを行う最も簡単な方法は、super
の実装を呼び出すことです。これは、ポイントがビュー内にある場合はビューまたはそれ自体のサブビューを返しself
、そのメソッドが非を返した場合は単に戻りnil
ます。が返された場合nil
、あなたも を返しnil
ます。
それほど単純ではありませんが、おそらくより効率的な方法は、ポイントをウィンドウの座標系からビューの座標系に変換し、 を使用NSPointInRect
してポイントがビューの 内にあるかどうかをテストすることbounds
です。