堆栈视图中控件的可访问性

Ash*_*shh 4 accessibility ios swift

我有一个水平堆栈视图,带有水平按钮和标签

当我打开旁白时,这些按钮中的文本根本无法阅读。其他所有工作正常。

下面是我如何设置我的代码。请指导如何启用这些功能。不知道为什么这不起作用

我的按钮文本和标签文本采用动态值

另外,如果有任何关于为什么使用accessibilityIdentifier的信息确实会有帮助。我找不到明确的解释

self.myHorizontalStackView.isAccessibilityElement = true

//Accessibility for Button
self.submitButton.isAccessibilityElement = true
self.submitButton.accessibilityTraits = UIAccessibilityTraitStaticText
self.submitButton.accessibilityLabel = screenControls.buttonTitle

//Accessibility for Label
self.addressLabel.isAccessibilityElement = true
self.addressLabel.accessibilityTraits = UIAccessibilityTraitStaticText
self.addressLabel.accessibilityLabel = screenControls.address1
Run Code Online (Sandbox Code Playgroud)

BHe*_*cks 7

所以看来问题出在你stackView自己身上。请参阅有关主题的其他问题/答案:

如果容器视图可访问,则其子视图通常会被遮挡,以避免对用户尝试交互的内容产生混淆。

因此,在这里,将您共享的代码片段中的第一行更改为:

self.myHorizontalStackView.isAccessibilityElement = false
Run Code Online (Sandbox Code Playgroud)

这应该使 VoiceOver 能够找到stackView.

至于你的另一个问题:

另外,如果有任何关于为什么使用accessibilityIdentifier的信息确实会有帮助。我找不到明确的解释

如果您询问标识符的用途,它主要用于测试目的。通过为视图设置唯一标识符,您的测试可以轻松地使用辅助功能引擎来查找特定视图并执行您想要测试的任何操作。就 VoiceOver 而言,accessibilityIdentifier没有作用。