Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
macOS菜单栏应用程序中的键盘快捷键不起作用_Macos_Cocoa_Keyboard Shortcuts_Menubar_Nsmenuitem - Fatal编程技术网

macOS菜单栏应用程序中的键盘快捷键不起作用

macOS菜单栏应用程序中的键盘快捷键不起作用,macos,cocoa,keyboard-shortcuts,menubar,nsmenuitem,Macos,Cocoa,Keyboard Shortcuts,Menubar,Nsmenuitem,我创建了一个仅在菜单栏中运行的macOS应用程序 在Xcode中,我为某些NSMenuItem添加了一个快捷方式,该快捷方式在Inspector中具有与Key等效的属性 在这种情况下,它是Shift+F4和Shift+F5 快捷方式确实有效,但仅在打开菜单时有效。我想这是因为,应用程序在其余时间都在后台 即使菜单未打开,如何使快捷方式工作 “隐藏时允许”复选框不起作用。我假设它指的是项目本身,可以标记为隐藏 任何想法和建议都将不胜感激。看起来您正在使用NSStatusItem 操作系统将不处

我创建了一个仅在菜单栏中运行的macOS应用程序

在Xcode中,我为某些NSMenuItem添加了一个快捷方式,该快捷方式在Inspector中具有与Key等效的属性

在这种情况下,它是Shift+F4和Shift+F5

快捷方式确实有效,但仅在打开菜单时有效。我想这是因为,应用程序在其余时间都在后台

即使菜单未打开,如何使快捷方式工作

“隐藏时允许”复选框不起作用。我假设它指的是项目本身,可以标记为隐藏


任何想法和建议都将不胜感激。

看起来您正在使用NSStatusItem

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


我想从另一个人那里得到答案。更多详情请参阅该帖子。

谢谢!这是一个完美的解释,为什么它会这样。根据我的观察,主菜单和NSStatusBar在概念上是不同的。当应用程序处于活动状态时,主菜单将可见,但在状态栏的情况下,它始终可见。因此,此状态栏项目仅在用户按下时才处于活动状态。这是否回答了您的问题?