如何禁用点击进入另一个NSView后面的NSView

时间:2012-07-13 18:11:08

标签: objective-c macos cocoa nsview

我有两个NSViews彼此叠加。一个NSView呈现一个包含行的表。点击一行后,另一个视图显示在该视图的顶部。

现在问题是当我点击第二个视图上的某个区域时,NSView下面有一行,然后点击它。我怎么能阻止它?

谢谢

3 个答案:

答案 0 :(得分:7)

在您的顶级视图中,在该视图中实现mouseDown:,不要调用nextResponder或在其中执行任何操作。

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

我有与OP相同的场景,这对我有用。相信我找到here的答案让我想到了这一点。

答案 1 :(得分:0)

在视图中子类并实现acceptsFirstMouse,返回YES。另外,在该视图中将acceptsTouchEvents设置为YES

答案 2 :(得分:-8)

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

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

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