我在 NSStatusBar
中添加了 NSMenu
。我为第一个 NSMenuItem
使用了自定义 View ,并使用 setView
: 方法来包含 progressIndicator
。所有其他项目都是默认的。
这里的问题是 VO(残疾人配音)。当我从设置 -> 辅助功能 -> VoiceOver 启用 VO 并按 option+command+M+M
时,它会聚焦于状态栏中的菜单。现在使用左右键导航到我的应用程序,然后按下打开 NSMenu 的键。
我可以下来选择我的选项,但不能从这里更改到其他应用程序(wifi、日期)。当我删除这个自定义 View 项目时,它工作正常。我在另一个应用程序中也观察到了同样的情况。
我是否需要为自定义 View 设置任何属性。
编辑
我在 swift 中创建了示例应用程序。
let menu = NSMenu()
let menuitem1 = NSMenuItem()
let view1 = NSView(frame: NSRect(x: 0, y: 0, width: 100, height: 30))
menuitem1.view = view1
menu.addItem(menuitem1)
menu.addItem(NSMenuItem(title: "Print Quote", action: #selector(AppDelegate.printQuote(_:)), keyEquivalent: "P"))
menu.addItem(NSMenuItem.separator())
menu.addItem(NSMenuItem(title: "Quit Quotes", action: #selector(NSApplication.terminate(_:)), keyEquivalent: "q"))
即使在这个简单的应用程序中,我也无法让 VO 正常工作。 步骤
VO(控制+选项)+ M + M
VO + 空格键选择我们的应用选项。
VO + 向下键在里面导航。
然后尝试在其他应用中向左或向右移动。它不会切换到其他应用程序。
编辑 2 观察是当我首先选择自定义 View 并尝试切换到它工作的其他应用程序时。但是一旦我从自定义 View 中选择了普通的菜单项,它就会遇到一些问题。我找到的唯一解决方案是使用所有默认菜单项或使用自定义 View 的所有项目。
最佳答案
对于表格中显示的 NSMenuItem
,我可以在 newAutoLayoutView
上添加 accessibilityLabel
。
NSView *cellView = [NSView newAutoLayoutView];
cellView.accessibilityLabel = @"Voiceover Tab Name";
关于macos - 旁白在状态栏中的 NSMenu 中不起作用,带有 NSMenuItem 的自定义 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49727796/