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 NSStatusItem不可通过键盘导航_Macos_Cocoa_Swift_Nsstatusitem - Fatal编程技术网

Macos NSStatusItem不可通过键盘导航

Macos NSStatusItem不可通过键盘导航,macos,cocoa,swift,nsstatusitem,Macos,Cocoa,Swift,Nsstatusitem,我已经为我的应用程序创建了一个NSStatusItem,但希望它在使用Control+F8(Control+fn+F8)时可以导航,就像系统项目一样 导航序列中莫名其妙地跳过了状态项。是否有接受第一反应者的秘密握手或为此需要做些什么 这基本上是我为该项目提供的所有设置代码: statusItem = NSStatusBar.systemStatusBar().statusItemWithLength(28) statusItem.menu = menu statusItem.button?.im

我已经为我的应用程序创建了一个NSStatusItem,但希望它在使用Control+F8(Control+fn+F8)时可以导航,就像系统项目一样

导航序列中莫名其妙地跳过了状态项。是否有接受第一反应者的秘密握手或为此需要做些什么

这基本上是我为该项目提供的所有设置代码:

statusItem = NSStatusBar.systemStatusBar().statusItemWithLength(28)
statusItem.menu = menu
statusItem.button?.image = NSImage(named: "menuIcon")

我在quoara.com上发现了一个类似的问题:

引用科林·巴雷特的话:

第三方项使用与内置项(NSMenuExtra)不同的API(NSStatusItem)实现。请注意,您可以拖动以重新排列菜单附加项,但不能重新排列状态项(状态项始终显示在菜单附加项的左侧)

不幸的是,NSMenuExtra是私有API,在Mac应用商店中,使用它的应用程序可能会越来越少

作为一个第三方应用程序的例子,你可以用F8键点击菜单图标/图表


因此,如果你真的想通过键盘打开状态菜单项,你就必须在苹果的私有框架内进行挖掘,然而这是一个不稳定的领域,因为它们随时都可能发生变化,而不会发出任何通知。

UGH,是时候使用雷达了。这是一个严重的可访问性问题。如果我没记错的话,您可以通过可访问性API访问状态项(我不久前基于可访问性API编写了一个小型QA自动化库,并且我能够通过编程访问状态项)