Objective c 如何在另一个NSView后面禁用对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
谢谢在显示俯视图时,您可以在俯视图中启用触摸和鼠标事件:
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
后面的任何操作(编辑文本、单击按钮等)。有没有办法完全阻止互动?你找到解决办法了吗?