我在一个响应mouseDown事件的NSMenuItem(附加到MenuBar)中有一个自定义NSView。但我需要在自定义视图上单击两次以调用mouseDown函数,这是因为自定义视图应该是第一响应者。当我在我的CustomView控制器中覆盖方法acceptFirstResponder时,如Cocoa事件处理指南所示,它不起作用。解决办法是什么?它可行吗?
答案 0 :(得分:2)
覆盖NSView
方法acceptsFirstMouse:
以返回相关事件的YES
。如果你只想接受第一次鼠标点击某些类型的事件,你可以通过检查传入的事件参数来做到这一点。除非特别关于NSMenuItem案例有什么特别之处,这应该是你想要的;它是标准的Cocoa机制。请注意,此方法与您尝试过的acceptsFirstResponder
方法不同。有关详细信息,请参阅Apple的文档。
答案 1 :(得分:1)
作为参考,我刚刚在自定义视图中添加了以下内容:
- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent {
return YES;
}