Objective c 如何在另一个NSView后面禁用对NSView的点击

Objective c 如何在另一个NSView后面禁用对NSView的点击,objective-c,macos,cocoa,nsview,Objective C,Macos,Cocoa,Nsview,我有两个相互重叠的视图。一个NSView显示一个包含行的表。单击一行时,另一个视图将显示在该视图的顶部 现在的问题是,当我点击第二个视图中的一个区域,在该视图中有一行,然后点击它。我怎样才能阻止它 谢谢在显示俯视图时,您可以在俯视图中启用触摸和鼠标事件: topView.acceptsTouchEvents = YES; topView.acceptsFirstMouse = YES; 编辑:注释正确,即acceptsFirstMouse不是属性,必须在子类中更新。在视图中创建子类并实现acc

我有两个相互重叠的视图。一个NSView显示一个包含行的表。单击一行时,另一个视图将显示在该视图的顶部

现在的问题是,当我点击第二个视图中的一个区域,在该视图中有一行,然后点击它。我怎样才能阻止它


谢谢

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

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

编辑:注释正确,即
acceptsFirstMouse
不是属性,必须在子类中更新。

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

在顶层视图中,在该视图中执行
鼠标向下:
,不要调用nextResponder或在其中执行任何操作

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

我有完全相同的场景作为OP,这是为我工作的预期。这要归功于我找到的答案

我只是试了一下,但没用。我在NSView上找不到acceptsFirstMouse属性。@PeterDeWeese,似乎您必须在
acceptsFirstMouse
中创建子类并返回YES,因为它不是NSView的属性。我不知道这几章,但我通过更改设计解决了我的问题。Thanks@Leo,如果答案无效,你为什么会接受?我将删除我的答案以减少混淆。。。。事实上我不能,因为它被接受了。我添加了第二个。请随意充实一下。这是可行的,但我注意到鼠标光标仍然会改变,以显示顶部
NSView
后面的任何操作(编辑文本、单击按钮等)。有没有办法完全阻止互动?你找到解决办法了吗?