2014-02-25 124 views
2

例如,我有一个NSMenuItem类型变量,其标题为“历史”。我需要一个键盘快捷键元+ H做同样的事情,点击该菜单项(弹出子菜单列表)..模拟鼠标点击可可中的菜单项?

我觉得可能是实现这两种方法:

1 .bind这个菜单项的快捷键,然后将可可将触发执行时,该快捷方式被激发

2.not键盘快捷键结合到该项目的动作属于该项目。创建元+ H,当事件被激活的事件处理程序,模拟在菜单项上点击鼠标。

然而,这两种方法都不对现在的工作。

对于键盘快捷键,有一个名为setKeyEquivalent方法,但它使用命令,而不是作为改性剂。其结果是执行动作绑定到菜单项,而不是弹出一个子菜单。

点击鼠标的模拟,在可可的NSMenuItem参考,我还没有看到如何像click发送事件到NSMenuItem ..

有没有人有这个想法?谢谢!

+0

哪些关键是元? – uchuugaka

+0

除非您的建筑物辅助功能或自动化工具,否则您确实不想模拟鼠标点击菜单。它需要摆弄奔跑 – uchuugaka

回答

2
[menuItem setKeyEquivalent:@" "]; 
[menuItem setKeyEquivalentModifierMask:0]; 

与任何这些修饰键掩模的(使用C位OR运算符相结合):

  • NSShiftKeyMask
  • NSAlternateKeyMask
  • NSCommandKeyMask
  • NSControlKeyMask

(顺便说一句,Apple's docs可真有用!)

+0

可以是有用的,但也令人愤怒。祝你好运找到可能的键字符串。 – uchuugaka

+0

@uchuugaka文档并不总是很好 - 真实。但是,在'setKeyEquivalentModifierMask:'doc中所有的掩码都被描述,对于'keyEquivalent:'也是如此,包括退格和删除。至于更奇特的钥匙 - 你可能根本不想使用它们,因为你的用户无论如何都找不到钥匙;-) – cacau

0

你的问题稍微不清楚 -

如果您设置一个快捷可可将调用命令为您和您的代码将永远不知道用户是否使用鼠标或打等效键。

如果您想通过其他方式来调用相同的命令(关键在NSView等)。你会想要手动调用与菜单定义相同的方法。