如何创建一个包含 NSMenuItem 的 NSMenu,该 NSMenuItem 仅在按住键盘修饰键时出现?

问题描述

我想创建一个 NSMenu,其中包含一个默认隐藏的 NSMenuItem,并且仅在用户按住键盘修改键时才会出现。

基本上,我正在寻找与 Finder 的“Go”菜单中的“Library”选项相同的行为:

不按住Option (⌥):

enter image description here

同时持有期权(⌥):

enter image description here


我已经尝试使用 [NSEvent addGlobalMonitorForEventsMatchingMask: handler:] 安装密钥侦听器,通过设置 NSMenuItem 属性以编程方式隐藏和取消隐藏 hidden。这种方法有效,但问题是当 NSMenu 打开时隐藏/取消隐藏不起作用。显然,NSMenu 在打开时完全接管了事件处理循环,从而阻止了键侦听器的工作。
我可能可以使用 CGEventTap 在 NSMenu 打开时仍然接收事件,但这似乎完全是矫枉过正。

我发现的另一个与我想要的类似的东西是 NSMenu 的“alternate”机制。但我只能让它切换 NSMenuItems,而不是隐藏/取消隐藏它们。

任何帮助将不胜感激。谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)