如何在UITextField中为占位符文本设置辅助功能特征?

Jay*_*ske 6 uitextfield ios voiceover

我正在浏览我们的iOS应用程序以修复可访问性问题.该应用程序的一个功能是UITextField,用户可以在其中输入搜索查询.我已将该字段的特征设置为"搜索字段",而VoiceOver在大多数情况下都可以很好地处理该字段.当字段中有文本时,它会读取文本,然后显示"搜索字段".

我想解决的问题是VoiceOver如何处理占位符文本.当文本字段为空时,我们设置占位符文本以显示示例查询.由于它显示为灰色文本,因此有视力的用户可以看到它只是占位符文本.但VoiceOver并没有为视障用户做出这样的区分.它只是以与常规文本相同的方式读取占位符文本,没有额外的描述.

有没有办法为UITextField的占位符文本添加辅助功能特征?或者让人们通过其他方式解决这个问题?

And*_*law 2

我相信您可以在 NSString 对象上设置accessibilityLabel 和其他辅助功能属性,然后使用该字符串作为占位符文本。Voiceover 将发现该属性并使用它。

NSString *placeholderText = @"Search";
placeholderText.accessibilityLabel = @"Try searching for xxxx";
field.placeholder = placeholderText;
Run Code Online (Sandbox Code Playgroud)

类似的事情。未经测试,但我在 WWDC 开发者视频之一中看到了它。

警告:iOS 8.0 及更高版本中的行为与预期不符。

//In iOS 8+
NSString *placeholderText = @"Search"; //This will be announced
placeholderText.accessibilityLabel = @"Try searching for xxxx";//This will be ignored
field.placeholder = placeholderText;
Run Code Online (Sandbox Code Playgroud)

这个答案应该被认为是过时的。