如何在 MacOS 上为 Swift 中的 VoiceOver 分组 UI 元素?

How to Group UI Elements in Swift for VoiceOver on MacOS?

我使用 NSStackView 轻松组织 UI 元素并将它们放置在主视图的不同区域。

现在,VoiceOVer 在一个层中看到所有 UI 个元素,我想知道如何制作堆栈视图,以便 VoiceOver 用户必须与每个堆栈视图进行交互和停止交互。

更好的是,是否有任何通用视图自动作为一个组出现在 VoiceOver 中,我可以将其用作容器?

如果有人能提供 Swift 中的任何片段,我将不胜感激。

谢谢!

通过采用 NSAccessibilityGroup,我能够让 NSStackView 作为一个组工作。

class GroupView:NSStackView, NSAccessibilityGroup {
    override func accessibilityLabel() -> String? {
        return "Test"
    }
}    

然后 select 故事板中的堆栈视图,打开身份检查器,并将 GroupView 指定为自定义 class。

这不需要子类化。只需致电:

stackView.setAccessibilityElement(true)

然后您还应该为 VoiceOver 用户添加一些关于他们将遇到的新组的内容的信息。示例:

stackView.setAccessibilityLabel("actions")
stackView.setAccessibilityRole(.toolbar)