18

2つのNSViewが重なり合っています。1つのNSViewは、行を含むテーブルを表示します。行をクリックすると、そのビューの上に別のビューが表示されます。

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

ありがとう

4

3 に答える 3

13

トップレベルのビューでmouseDown:、そのビューに実装し、nextResponderを呼び出したり、その中で何もしないでください。

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

私はOPとまったく同じシナリオを持っており、これは意図したとおりに機能しています。私がこれに導いたここで私が見つけた答えのおかげです。

于 2016-05-12T15:57:19.737 に答える
1

ビューにサブクラス化して実装acceptsFirstMouseし、を返しYESます。また、そのビューでに設定acceptsTouchEventsYESます。

于 2016-01-06T15:15:44.677 に答える
-8

表示されたときに、上面ビューでタッチイベントとマウスイベントを有効にできます。

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

編集:コメントはプロパティではなく正しいのでacceptsFirstMouse、サブクラスで更新する必要があります。

于 2012-07-13T18:33:36.453 に答える