iOS VoiceOver – 在标准 UIView 中实现“x of y”读出?
Posted
技术标签:
【中文标题】iOS VoiceOver – 在标准 UIView 中实现“x of y”读出?【英文标题】:iOS VoiceOver – implement “x of y” read-out in a standard UIView? 【发布时间】:2014-08-15 10:25:08 【问题描述】:在 ios 中使用 VoiceOver 时,当查看分段控制器之类的东西时,VoiceOver 会读取分段及其索引,即“Selected: Something: 2 of 4”。
我有一个自定义 UIView 容器,其中包含几个按钮,我想在滑动容器中的按钮时复制“2 of 4”的行为。
如果可能的话,我希望在不创建自定义 UIView 子类的情况下这样做。能做到吗?
【问题讨论】:
【参考方案1】:您可以通过设置以下accessibilityLabel, accessibilityValue, accessibilityHint and accessibilityTrait
之一来实现此目的。
假设有问题的按钮的文本是“Blue OK”,而您想要阅读的额外文本是“2 out of 4”
默认情况下,VoiceOver 会显示:“蓝色 OK” - 短暂停 - “按钮”
将
accessibilityLabel
设置为“2 / 4”将导致:
“2 / 4” - 短暂停 - “按钮”
将
accessibilityValue
设置为“2 / 4”将导致:
“蓝色 OK” - 短暂停 - “4 分之二” - 短暂停 - “按钮”
将
accessibilityHint
设置为“2 / 4”将导致:
“蓝色 OK” - 短暂停 - “按钮” - 长暂停 - “2 / 4”
请注意,在这种情况下,用 2 根手指向下滑动不会读取“4 中的 2”
如果button.selected
标志设置为YES
,VoiceOver 将通过为其设置一个特征来宣布被选中的对象。如果要显式添加到不支持 selected 属性的对象,可以自己添加 trait:
//can concatenate multiples ones like so UIAccessibilityTraitButton | UIAccessibilityTraitSelected
mybutton.accessibilityTraits = UIAccessibilityTraitSelected;
在上面的示例中读取“按钮”的位置与读取该特征的位置相同:
“蓝色 OK” - 短暂停 - “按钮,选中”
如果您希望措辞顺序不同,则需要混合和匹配 accessibilityLabel, accessibilityValue, accessibilityHint and accessibilityTrait
的值,直到获得您正在寻找的确切措辞。
【讨论】:
【参考方案2】:将按钮索引附加到项目的accessibilityLabel
。这里没有魔法。此上下文不一定对其他可访问性客户端(包括 Switch Control)的用户有帮助,但除了更改 UIAccessibility
属性之外,没有其他方法可以重现内部 VoiceOver 行为。
【讨论】:
以上是关于iOS VoiceOver – 在标准 UIView 中实现“x of y”读出?的主要内容,如果未能解决你的问题,请参考以下文章