2つのNSViewが重なり合っています。1つのNSViewは、行を含むテーブルを表示します。行をクリックすると、そのビューの上に別のビューが表示されます。
ここで問題となるのは、NSViewの下に行がある2番目のビューの領域をクリックすると、クリックされることです。どうすればそれを止めることができますか?
ありがとう
2つのNSViewが重なり合っています。1つのNSViewは、行を含むテーブルを表示します。行をクリックすると、そのビューの上に別のビューが表示されます。
ここで問題となるのは、NSViewの下に行がある2番目のビューの領域をクリックすると、クリックされることです。どうすればそれを止めることができますか?
ありがとう
トップレベルのビューでmouseDown:
、そのビューに実装し、nextResponderを呼び出したり、その中で何もしないでください。
- (void)mouseDown:(NSEvent *)theEvent{
//Do nothing to not propagate the click event to descendant views
}
私はOPとまったく同じシナリオを持っており、これは意図したとおりに機能しています。私がこれに導いたここで私が見つけた答えのおかげです。
ビューにサブクラス化して実装acceptsFirstMouse
し、を返しYES
ます。また、そのビューでに設定acceptsTouchEvents
しYES
ます。
表示されたときに、上面ビューでタッチイベントとマウスイベントを有効にできます。
topView.acceptsTouchEvents = YES;
topView.acceptsFirstMouse = YES;
編集:コメントはプロパティではなく正しいのでacceptsFirstMouse
、サブクラスで更新する必要があります。