2011-04-26 45 views
2

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

回答

2

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

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

+0

对不起,让我澄清,如果它有任何区别。我的应用程序只是一个NSStatusItem,没有其他主菜单或窗口。如果是这种情况,我怎么能把它设置为重点。 – 2011-04-26 02:39:55

+0

你不能,但没关系。状态栏是一个不同的应用程序,只有当您打开菜单时才会处于焦点状态。我发现这个不完整的同时找到一个链接的实际解决方案,但我现在发现它,所以我会将它添加到帖子。 – ughoavgfhw 2011-04-26 02:44:40

+0

谢谢,我没有为主菜单设置关键等价物,只是为了NSStatusItem。 – 2011-04-30 00:35:11

-1

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