我有两个 NSViews 在彼此之上。一个 NSView 呈现一个带有行的表。单击一行时,另一个视图会显示在该视图的顶部。
现在的问题是,当我单击第二个视图上的一个区域时,在 NSView 下方有一行时,它会被单击。我怎么能阻止它?
谢谢
我有两个 NSViews 在彼此之上。一个 NSView 呈现一个带有行的表。单击一行时,另一个视图会显示在该视图的顶部。
现在的问题是,当我单击第二个视图上的一个区域时,在 NSView 下方有一行时,它会被单击。我怎么能阻止它?
谢谢
在您的顶级视图中,mouseDown:
在该视图中实现并且不要调用 nextResponder 或在其中执行任何操作。
- (void)mouseDown:(NSEvent *)theEvent{
//Do nothing to not propagate the click event to descendant views
}
我有与 OP 完全相同的场景,这对我来说是按预期工作的。归功于我在这里找到的答案导致我这样做。
子类化并acceptsFirstMouse
在视图中实现,返回YES
. 此外,在该视图中设置acceptsTouchEvents
为。YES
您可以在显示时在顶视图中启用触摸和鼠标事件:
topView.acceptsTouchEvents = YES;
topView.acceptsFirstMouse = YES;
编辑:评论是正确的,acceptsFirstMouse
不是属性,必须在子类中更新。