更改UITextField可访问性描述

时间:2011-12-06 11:50:33

标签: iphone ios accessibility

有没有办法将UITextField的辅助功能标签设置为“文本字段”以外的其他标签。因此,我不想调用“文本字段”,而是将其命名为“代码验证字段”。

5 个答案:

答案 0 :(得分:3)

My advice would be to not try to outsmart the system on build-in Voice Over outputs.

"Text field is editing" is to a blind user the audible equivalent to "This item is selected and there is a blinking cursor in it".

Same as you are unlikely to remove/change the blinking cursor from your UITetxtField you shouldn't try to remove/change that built in output.

Feel free to use the accessibilityLabel and accessibilityHint to add more context to this field.

答案 1 :(得分:2)

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

答案 2 :(得分:2)

如何安静“文字字段”&替换它的选项

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

这是该答案的代码摘录。

静音“文字字段”

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的更多信息。

答案 3 :(得分:1)

据我所知,Voice over在文本字段时读取accessibilityLabel,accessibilityHint,“文本字段正在编辑”。在更改特征之前无法更改此内容。

您可以将特征更改为UIAccessibilityTraitNone,这样就不会将其视为“文本字段正在编辑”。

答案 4 :(得分:1)

使用当前建议更新此问题。

超越UIKit提供的可访问性属性覆盖UIKit的默认可访问性处理是不合适的。使用accessibilityLabel,accessibilityHint,accessibilityTraits等

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

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

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

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

相关问题