如何在NSMenuItem中创建自定义NSView,成为FirstRirstResponder?

时间:2015-10-23 14:13:16

标签: macos cocoa mouseevent nsview nsmenuitem

我在一个响应mouseDown事件的NSMenuItem(附加到MenuBar)中有一个自定义NSView。但我需要在自定义视图上单击两次以调用mouseDown函数,这是因为自定义视图应该是第一响应者。当我在我的CustomView控制器中覆盖方法acceptFirstResponder时,如Cocoa事件处理指南所示,它不起作用。解决办法是什么?它可行吗?

2 个答案:

答案 0 :(得分:2)

覆盖NSView方法acceptsFirstMouse:以返回相关事件的YES。如果你只想接受第一次鼠标点击某些类型的事件,你可以通过检查传入的事件参数来做到这一点。除非特别关于NSMenuItem案例有什么特别之处,这应该是你想要的;它是标准的Cocoa机制。请注意,此方法与您尝试过的acceptsFirstResponder方法不同。有关详细信息,请参阅Apple的文档。

答案 1 :(得分:1)

作为参考,我刚刚在自定义视图中添加了以下内容:

- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent {
    return YES;
}