18

我有两个 NSViews 在彼此之上。一个 NSView 呈现一个带有行的表。单击一行时,另一个视图会显示在该视图的顶部。

现在的问题是,当我单击第二个视图上的一个区域时,在 NSView 下方有一行时,它会被单击。我怎么能阻止它?

谢谢

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. 此外,在该视图中设置acceptsTouchEvents为。YES

于 2016-01-06T15:15:44.677 回答
-8

您可以在显示时在顶视图中启用触摸和鼠标事件:

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

编辑:评论是正确的,acceptsFirstMouse不是属性,必须在子类中更新。

于 2012-07-13T18:33:36.453 回答