簡體   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