2012-07-13 12 views
9

私はお互いの上に2つのNSViewを持っています。 1つのNSViewは、行を含むテーブルを表示します。行をクリックすると、そのビューの上に別のビューが表示されます。無効にするには別のNSViewの背後にあるNSViewにクリックスルー

問題は、NSViewの下の行がクリックされた2番目のビューの領域をクリックしたときです。どうすればそれを止めることができますか?

おかげ

答えて

-8
それが提示されたとき

あなたは、トップビューでタッチイベントとマウスイベントを有効にすることができます

topView.acceptsTouchEvents = YES; 
topView.acceptsFirstMouse = YES; 

編集:コメントはacceptsFirstMouseは財産ではない、としなければならないことが正しいですサブクラスで更新される

+0

私はちょうどそれを試み、それは動作しませんでした。 NSViewでacceptsFirstMouseプロパティが見つかりませんでした。 – Leo

+2

@PeterDeWeese NSViewのプロパティではないので、 'acceptsFirstMouse'にサブクラス化してYESを返さなければならないようです。 – CodaFi

+0

このチャップスについてのアイデアはありませんが、私はデザインを変更することで私の問題を解決しました。ありがとう – Leo

0

サブクラスとYESを返し、ビューにacceptsFirstMouseを実装します。また、そのビューでacceptsTouchEventsYESに設定します。あなたのトップレベルのビューで

+0

は機能しません – zic10

3

、そのビューでmouseDown:を実装し、nextResponderを呼び出すか、それで何もしません。

- (void)mouseDown:(NSEvent *)theEvent{ 
    //Do nothing to not propagate the click event to descendant views 
} 

私はOPとまったく同じシナリオを持ち、これは意図したとおりに動作しています。私がこれにつながったと答えたのはhereです。

関連する問題