0

私はを持っておりNSScrollView、そのドキュメントビューはNSViewMasterPageというタイトルのサブビューです。MasterPageには、(ユーザー入力に応じて)多数のサブビュー(Pageというクラスから)があります。これらはグリッド形式でレイアウトされています。NSPointMasterPageでのマウスクリックをキャプチャしようとしています。サブビューがない場合に機能しますが、クリックされたポイントがサブビューの領域内にある場合、スーパービューはそれを登録しません。これを行う方法はありますか?それが理にかなっていることを願っています。

赤い領域は、スーパービューの.mファイルでのマウスクリックを登録します。4つのサブビューはそうではありません。

赤い領域は、スーパービューの.mファイルでのマウスクリックを登録します。 4つのサブビューはそうではありません。

4

1 に答える 1

1

MasterPageクラスでは、メソッドをオーバーライドして、サブビューの 1 つではなくNSView's -hitTest:メソッドを返すことができます。イベント処理ガイド: マウスおよびタブレット イベントのパス を参照してください。selfPage

このサンプル プロジェクトhttp://www.markdouma.com/developer/SubviewSuperview.zipでは、ロギング呼び出しを監視して、何NSViewがイベントを受け取るかを確認できます。Alt/Option キーを押したままクリックすると、白いビューが上書きされて元-hitTest:に戻り、灰色のビューがイベントを受信できなくなります。

ここに画像の説明を入力

于 2011-09-21T21:56:17.763 に答える