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

时间:2018-04-15 11:04:12

标签: swift macos accessibility voiceover

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

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

更好的是,VoiceOver作为一个组会自动显示任何通用视图吗?我可以将它用作容器吗?

如果有人可以在Swift中提供任何代码段,我真的很感激。

谢谢!

3 个答案:

答案 0 :(得分:1)

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

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

然后从故事板中选择堆栈视图,打开身份检查器,并将GroupView指定为自定义类。

答案 1 :(得分:0)

这不需要子类化,您只需要调用:

stackView.setAccessibilityElement(true)

然后,最好还为VoiceOver用户添加一些有关他们将遇到的新组的内容的信息。示例:

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

答案 2 :(得分:0)

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

stackView.setAccessibilityElement(true)

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

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