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”读出?的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 上模拟 VoiceOver 辅助功能点击

是否可以在 iOS 应用中启用或禁用 VoiceOver?

如何让 VoiceOver 在 iOS 中宣布部分标签?

Xamarin 表单 - 如何在 TabbedView (iOS) 上自定义 VoiceOver

隐藏WKWebView避免VoiceOver识别ios

VoiceOver 是不是总是忽略宽度和高度为零的 iOS 视图?