更改 UITextField 可访问性描述

Posted

技术标签:

【中文标题】更改 UITextField 可访问性描述【英文标题】:change UITextField accessibility description 【发布时间】:2011-12-06 11:50:33 【问题描述】:

有没有办法将 UITextField 的可访问性标签设置为“文本字段”以外的内容。因此,我不想将其称为“文本字段”,而是将其命名为“代码验证字段”。

【问题讨论】:

【参考方案1】:

我的建议是不要试图在内置 Voice Over 输出上超越系统。

“文本字段正在编辑”对于盲人用户来说相当于“该项目已被选中并且其中有一个闪烁的光标”。

与您不太可能从 UITetxtField 中删除/更改闪烁光标一样,您不应尝试删除/更改内置输出。

随意使用accessibilityLabelaccessibilityHint 为该字段添加更多上下文。

【讨论】:

【参考方案2】:

如何安静“文本字段”及期权来取代它 h1>

我发布了一个related answer,其中说明了阻止 VoiceOver 宣布 UITextField 的“文本字段”的几种方法。

这是从回答一个代码摘录。 P>

静默“文本字段”

let textField = UITextField()
textField.accessibilityTraits = UIAccessibilityTraitStaticText

 

替换文字

您可以使用accessibilityHint 作为您想要“代码验证字段”的备用控件名称

textField.accessibilityHint = "code verification field"

accessibilityLabel 也可以。实际区别是先读取accessibilityLabel,然后读取textField.text(在UITextField 中输入的文本),然后读取accessibilityHint

以下内容读作:“标签、文本、(短暂停...)提示”

textField.accessibilityTraits = UIAccessibilityTraitStaticText
textField.accessibilityLabel = "label"
textField.text = "text"
textField.accessibilityHint = "hint"

您可以了解更多有关UIAccessibility Element properties in Apple's API reference。 P>

【讨论】:

【参考方案3】:

我相信您必须设置该字段的 accessibilityLabel 属性(UIAccessibility 协议的一部分)。也许您还必须使用 accessibilityTraits 属性来覆盖 UIKit 标签。

【讨论】:

谢谢你,Ole Begemann!我试图改变accessibilityLabel 和accessibilityTraits。因此,如果我同时设置了它们,我就会有语音发音:, “文本字段正在编辑”。但我想要画外音而不是“文本字段”来说“代码验证字段”。我可以使用accessibilityTraits 做什么?【参考方案4】:

据我所知,当它是文本字段时,Voice over 会读取accessibilityLabel、accessibilityHint、“文本字段正在编辑”。除非您更改 trait,否则无法更改此设置。

您可以将 trait 更改为 UIAccessibilityTraitNone,这样它就不会读作“文本字段正在编辑”。

【讨论】:

【参考方案5】:

用一些当前的建议更新这个问题。

在 UIKit 提供的可访问性属性之外覆盖 UIKit 的默认可访问性处理是不合适的。使用accessibilityLabel、accessibilityHint、accessibilityTraits等。

UITextField 内置了可访问性并处理角色和状态信息,以便为 VoiceOver 用户提供一致且强大的体验。您可以使用accessibilityTraits 抑制某些VoiceOver 公告,但这并不意味着您应该这样做。

在这种情况下最合适的做法就是简单地设置一个合适的标签: myTextField.accessibilityLabel = "代码验证"

这将导致 VoiceOver 宣布“代码验证,文本字段,正在编辑”,这是用户期望听到的。

请注意,accessibilityHint 可以由用户关闭,因此此属性不应用于重要的消息传递或信息。

【讨论】:

以上是关于更改 UITextField 可访问性描述的主要内容,如果未能解决你的问题,请参考以下文章

CALayer 的动态可访问性标签

如何更改视图控制器中可访问性元素的顺序而不会失去对导航栏的访问权限?

UIStackView 可访问性 - 在默认的可访问元素中插入可访问性视图?

自动弹出窗口和键盘可访问性

在没有可访问性 ID 的 Xcode UI 测试中定位元素

使用可访问性标识符访问标签文本