菜单中的Cocoa Key等效功能不起作用

时间:2011-04-26 02:20:02

标签: objective-c cocoa xcode xcode4 nsmenuitem

我创建了一个NSStatusItem,并在界面构建器(Xcode 4.0)中分配了两个等效键。这些用于首选项菜单cmd-和退出选项cmd-q。当菜单突出显示/打开时,这两个都可以工作,但即使应用程序是最重要的,也不会起作用。关于为什么会发生这种情况或如何改变这种情况的任何想法?

2 个答案:

答案 0 :(得分:2)

操作系统将未处理的关键事件传递给前端应用程序,后者将其与主菜单和当前窗口中的任何等效键进行比较。它们不会与状态栏中的项目进行比较,并且由于状态栏实际上是一个不同的应用程序,因此应用程序位于前台并不重要。当菜单打开时,它就是焦点窗口。这就是为什么它适用于这种情况。

由于状态项仅在菜单打开时处于活动状态,因此您需要使用其他两种方法之一获取等效键。第一个更新的方法是使用event taps。我从未使用过这个,所以我无法建议如何设置它。另一个较旧的选项是使用热键。此方法将来可能不受支持,但如果您有兴趣,我在this answer中发布了一个示例。

答案 1 :(得分:-1)

我的猜测:你的NSMenu不在响应者链中。如果你能弄清楚如何在那里得到它,你可以让它工作。