【问题标题】:Cocoa Key Equivalent in Menu is not working菜单中的可可键等效项不起作用
【发布时间】:2011-04-26 02:20:01
【问题描述】:

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

【问题讨论】:

    标签: objective-c cocoa xcode xcode4 nsmenuitem


    【解决方案1】:

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

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

    【讨论】:

    • 对不起,让我澄清一下,如果有什么不同的话。我的应用程序只有一个 NSStatusItem,没有其他主菜单或窗口。如果是这种情况,我该如何将其设置为焦点。
    • 你不能,但这没关系。状态栏是一个不同的应用程序,它只有在您打开菜单时才会成为焦点。我在找到实际解决方案的链接时发布了这个不完整的内容,但我现在找到了,所以我会将它添加到帖子中。
    • 谢谢,我没有为主菜单设置等效键,仅用于 NSStatusItem。
    【解决方案2】:

    我的猜测:您的 NSMenu 不在响应者链中。如果你能弄清楚如何把它放进去,你可能可以让它工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多