【发布时间】:2011-04-26 02:20:01
【问题描述】:
我创建了一个 NSStatusItem 并在界面生成器 (Xcode 4.0) 中分配了两个等效键。这些用于首选项菜单 cmd- 和退出选项 cmd-q。当菜单突出显示/打开时,这两者都可以工作,但即使应用程序是最重要的,也不会工作。关于为什么会发生这种情况或如何改变这种情况的任何想法?
【问题讨论】:
标签: objective-c cocoa xcode xcode4 nsmenuitem
我创建了一个 NSStatusItem 并在界面生成器 (Xcode 4.0) 中分配了两个等效键。这些用于首选项菜单 cmd- 和退出选项 cmd-q。当菜单突出显示/打开时,这两者都可以工作,但即使应用程序是最重要的,也不会工作。关于为什么会发生这种情况或如何改变这种情况的任何想法?
【问题讨论】:
标签: objective-c cocoa xcode xcode4 nsmenuitem
操作系统将它不处理的键事件传递给前端应用程序,前端应用程序将它们与主菜单和当前窗口中的任何等效键进行比较。它们不会与状态栏中的项目进行比较,并且由于状态栏实际上是一个不同的应用程序,因此您的应用程序是否在前台并不重要。当您打开菜单时,它就是焦点所在的窗口。这就是它在这些情况下起作用的原因。
由于状态项仅在菜单打开时才处于活动状态,因此您需要使用其他两种方法之一来获取等效键。第一种较新的方法是使用event taps。我从来没有使用过这个,所以我不能建议如何设置它。另一个较旧的选项是使用热键。这种方法将来可能会不再支持,但如果您有兴趣,我在this answer 中发布了一个示例。
【讨论】:
我的猜测:您的 NSMenu 不在响应者链中。如果你能弄清楚如何把它放进去,你可能可以让它工作。
【讨论】: