繁体   English   中英

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

[英]How can I set an accessibility trait for the placeholder text in UITextField?

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

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

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

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

NSString *placeholderText = @"Search";
placeholderText.accessibilityLabel = @"Try searching for xxxx";
field.placeholder = placeholderText;

这样的事情。 未经测试,但我在其中一个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;

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

从UITextField派生自定义类,如下所示(代码在Swift中,但您可以适应Objective-C):

class MyTextField: UITextField {
    override public var accessibilityValue: String? {
        get { return self.text }
        set { super.accessibilityValue = newValue }
    }
}

将此类用作自定义类而不是UITextField。 当字段为空时,这将阻止VoiceOver读取占位符文本。

然后将您的可访问性标签设置为例如“搜索”和可访问性提示,指向您想要提示的任何内容(请参阅Apple的创建提示指南 )。 您可以以编程方式分配这些值,但最好在Interface Builder中分配它们。

你不能。 特征仅对辅助功能元素有意义。 对于你的UITextField来说,“静态文本”可能不正确。 即使可能是有效代码,在文本字段中的项目上设置特征也不起作用。

您可以做的是编辑控件的accessibilityLabel。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM