0

在 iOS 中使用 VoiceOver,当查看像分段控制器这样的东西时,VoiceOver 会读取分段及其索引,即“Selected: Something: 2 of 4”。

我有一个自定义 UIView 容器,其中包含几个按钮,我想在滑动容器中的按钮时复制“2 of 4”行为。

如果可能的话,我最好不要创建自定义 UIView 子类来执行此操作。那能实现吗?

4

2 回答 2

1

您可以通过设置以下之一来实现此目的accessibilityLabel, accessibilityValue, accessibilityHint and accessibilityTrait

假设有问题的按钮的文本是“Blue OK”,而您要阅读的额外文本是“2 out of 4”

  • 默认情况下,VoiceOver 将显示:

“蓝色 OK” - 短暂停 - “按钮”


  • 设置accessibilityLabel为“2 out of 4”将导致:

“2 / 4” - 短暂停 - “按钮”


  • 设置accessibilityValue为“2 out of 4”将导致:

“蓝色 OK” - 短暂停 - “4 分之二” - 短暂停 - “按钮”


  • 设置accessibilityHint为“2 out of 4”将导致:

“蓝色 OK” - 短暂停 - “按钮” - 长暂停 - “2 / 4”

请注意,在这种情况下,用 2 根手指向下滑动不会读取“4 中的 2”


button.selected如果标记被设置为, VoiceOver 将宣布被选中的对象,方法是为其YES设置一个 Trait。如果您想将其显式添加到不支持 selected 属性的对象,您可以自己添加 trait:

//can concatenate multiples ones like so UIAccessibilityTraitButton | UIAccessibilityTraitSelected
mybutton.accessibilityTraits = UIAccessibilityTraitSelected; 

在上面的示例中读取“按钮”的位置与读取此特征的位置相同:

“蓝色 OK” - 短暂停 - “按钮,已选择”

如果您希望措辞的顺序不同,那么您需要混合和匹配 的值,accessibilityLabel, accessibilityValue, accessibilityHint and accessibilityTrait直到获得您正在寻找的确切措辞。

于 2014-09-04T13:43:32.353 回答
0

将按钮索引附加到项目的accessibilityLabel. 这里没有魔法。此上下文不一定对其他可访问性客户端(包括 Switch Control)的用户有帮助,但除了更改UIAccessibility属性之外,没有其他方法可以重现内部 VoiceOver 行为。

于 2014-08-15T17:06:11.350 回答