私はお互いの上に2つのNSViewを持っています。 1つのNSViewは、行を含むテーブルを表示します。行をクリックすると、そのビューの上に別のビューが表示されます。無効にするには別のNSViewの背後にあるNSViewにクリックスルー
問題は、NSViewの下の行がクリックされた2番目のビューの領域をクリックしたときです。どうすればそれを止めることができますか?
おかげ
私はお互いの上に2つのNSViewを持っています。 1つのNSViewは、行を含むテーブルを表示します。行をクリックすると、そのビューの上に別のビューが表示されます。無効にするには別のNSViewの背後にあるNSViewにクリックスルー
問題は、NSViewの下の行がクリックされた2番目のビューの領域をクリックしたときです。どうすればそれを止めることができますか?
おかげ
あなたは、トップビューでタッチイベントとマウスイベントを有効にすることができます
topView.acceptsTouchEvents = YES;
topView.acceptsFirstMouse = YES;
編集:コメントはacceptsFirstMouse
は財産ではない、としなければならないことが正しいですサブクラスで更新される
サブクラスとYES
を返し、ビューにacceptsFirstMouse
を実装します。また、そのビューでacceptsTouchEvents
をYES
に設定します。あなたのトップレベルのビューで
は機能しません – zic10
、そのビューでmouseDown:
を実装し、nextResponderを呼び出すか、それで何もしません。
- (void)mouseDown:(NSEvent *)theEvent{
//Do nothing to not propagate the click event to descendant views
}
私はOPとまったく同じシナリオを持ち、これは意図したとおりに動作しています。私がこれにつながったと答えたのはhereです。
私はちょうどそれを試み、それは動作しませんでした。 NSViewでacceptsFirstMouseプロパティが見つかりませんでした。 – Leo
@PeterDeWeese NSViewのプロパティではないので、 'acceptsFirstMouse'にサブクラス化してYESを返さなければならないようです。 – CodaFi
このチャップスについてのアイデアはありませんが、私はデザインを変更することで私の問題を解決しました。ありがとう – Leo