【发布时间】:2011-12-06 11:50:33
【问题描述】:
有没有办法将 UITextField 的可访问性标签设置为“文本字段”以外的内容。因此,我不想将其称为“文本字段”,而是将其命名为“代码验证字段”。
【问题讨论】:
标签: iphone ios accessibility
有没有办法将 UITextField 的可访问性标签设置为“文本字段”以外的内容。因此,我不想将其称为“文本字段”,而是将其命名为“代码验证字段”。
【问题讨论】:
标签: iphone ios accessibility
我的建议是不要试图在内置 Voice Over 输出上超越系统。
“文本字段正在编辑”对于盲人用户来说相当于“该项目已被选中并且其中有一个闪烁的光标”。
与您不太可能从 UITetxtField 中删除/更改闪烁光标一样,您不应尝试删除/更改内置输出。
随意使用accessibilityLabel 和accessibilityHint 为该字段添加更多上下文。
【讨论】:
我发布了一个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>
【讨论】:
我相信您必须设置该字段的 accessibilityLabel 属性(UIAccessibility 协议的一部分)。也许您还必须使用 accessibilityTraits 属性来覆盖 UIKit 标签。
【讨论】:
据我所知,当它是文本字段时,Voice over 会读取accessibilityLabel、accessibilityHint、“文本字段正在编辑”。除非您更改 trait,否则无法更改此设置。
您可以将 trait 更改为 UIAccessibilityTraitNone,这样它就不会读作“文本字段正在编辑”。
【讨论】:
用一些当前的建议更新这个问题。
在 UIKit 提供的可访问性属性之外覆盖 UIKit 的默认可访问性处理是不合适的。使用accessibilityLabel、accessibilityHint、accessibilityTraits等。
UITextField 内置了可访问性并处理角色和状态信息,以便为 VoiceOver 用户提供一致且强大的体验。您可以使用accessibilityTraits 抑制某些VoiceOver 公告,但这并不意味着您应该这样做。
在这种情况下最合适的做法就是简单地设置一个合适的标签: myTextField.accessibilityLabel = "代码验证"
这将导致 VoiceOver 宣布“代码验证,文本字段,正在编辑”,这是用户期望听到的。
请注意,accessibilityHint 可以由用户关闭,因此此属性不应用于重要的消息传递或信息。
【讨论】: