在 iOS 中使用 VoiceOver,当查看像分段控制器这样的东西时,VoiceOver 会读取分段及其索引,即“Selected: Something: 2 of 4”。
我有一个自定义 UIView 容器,其中包含几个按钮,我想在滑动容器中的按钮时复制“2 of 4”行为。
如果可能的话,我最好不要创建自定义 UIView 子类来执行此操作。那能实现吗?
在 iOS 中使用 VoiceOver,当查看像分段控制器这样的东西时,VoiceOver 会读取分段及其索引,即“Selected: Something: 2 of 4”。
我有一个自定义 UIView 容器,其中包含几个按钮,我想在滑动容器中的按钮时复制“2 of 4”行为。
如果可能的话,我最好不要创建自定义 UIView 子类来执行此操作。那能实现吗?
您可以通过设置以下之一来实现此目的accessibilityLabel, accessibilityValue, accessibilityHint and accessibilityTrait
。
假设有问题的按钮的文本是“Blue OK”,而您要阅读的额外文本是“2 out of 4”
“蓝色 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
直到获得您正在寻找的确切措辞。
将按钮索引附加到项目的accessibilityLabel
. 这里没有魔法。此上下文不一定对其他可访问性客户端(包括 Switch Control)的用户有帮助,但除了更改UIAccessibility
属性之外,没有其他方法可以重现内部 VoiceOver 行为。