objective-c - 模拟鼠标点击 Cocoa 中的菜单项?

标签 objective-c macos cocoa keyboard-shortcuts

例如,我有一个标题为“History”的 NSMenuItem 类型变量。我需要一个键盘快捷键 Meta+h 来执行与单击此菜单项相同的操作(弹出子菜单列表)..

我认为可能有两种方法来实现这一点:

1.将此菜单项绑定(bind)到键盘快捷键,然后当快捷键被触发时,Cocoa将触发执行属于该菜单项的操作

2.未将键盘快捷键绑定(bind)到该项目。为Meta+h创建一个EventHandler,当事件激活时,模拟鼠标点击菜单项。

但是,这两种方法目前都不起作用。

对于键盘快捷键,有一个名为 setKeyEquivalent 的方法,但它使用 Command 而不是 Meta 作为修饰符。其结果是执行绑定(bind)到菜单项的操作,而不是弹出子菜单。

对于模拟鼠标点击,在Cocoa的NSMenuItem引用中,我还没有看到如何将click这样的事件发送到NSMenuItem ..

有人对此有什么想法吗?谢谢!

最佳答案

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

与任何这些修饰键掩码(使用 C 按位​​ OR 运算符组合):

  • NSShiftKeyMask
  • NSAlternateKeyMask
  • NSCommandKeyMask
  • NSControlKeyMask

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

关于objective-c - 模拟鼠标点击 Cocoa 中的菜单项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22005871/

相关文章:

macos - 拦截 OSX 上的所有出站流量

iphone - 使用 NSDateFormatter 解析 Twitter 字符串

ios - XIB 和 Storyboard 自动表达我的观点

android - 在 Mac OS 上使用 gradle 从 SVG for Android 生成可绘制对象

android - Xamarin 白标应用

macos - localhost 拒绝在 chrome mac 中连接

objective-c - 如何更改 Xcode 项目中的默认 MainMenu.xib 文件?

objective-c - 从捕获的图像中识别对象

objective-c - 如何在iphone sdk 上播放ustream 的视频?

ios - 在 objective-c 中的线程之间传递消息