例如,我有一个NSMenuItem
类型变量,其标题为“历史记录”。我需要键盘快捷键 Meta + h 来执行与单击此菜单项相同的操作(弹出子菜单列表)..
我认为可能有两种方法可以实现这一点:
1.将此菜单项绑定到键盘快捷键,然后Cocoa将在触发快捷方式时触发该操作属于该项目的执行
2.不绑定项目的键盘快捷键。为 Meta + h 创建一个EventHandler,当事件激活时,模拟鼠标单击菜单项。
但是,这两种方法现在都不起作用。
对于键盘快捷键,有一个名为setKeyEquivalent
的方法,但它使用 Command 而不是 Meta 作为修饰符。其结果是执行操作绑定到菜单项,而不是弹出子菜单。
为了模拟鼠标点击,在Cocoa的NSMenuItem
引用中,我还没有看到如何将click
之类的事件发送到NSMenuItem
..
有没有人有这方面的想法?谢谢!
答案 0 :(得分:2)
[menuItem setKeyEquivalent:@" "];
[menuItem setKeyEquivalentModifierMask:0];
使用任何这些修饰符键掩码(使用C按位OR运算符组合):
(BTW,Apple's docs非常有用!)
答案 1 :(得分:0)
你的问题有点不清楚 -
如果您设置了一个快捷方式,Cocoa将为您调用该命令,您的代码将永远不会知道用户是使用鼠标还是按键等效。
如果您想通过其他方式(NSView
中的键等)调用相同的命令。你想要手动调用与菜单定义相关联的方法。