[英]Why UITableViewCell is not accessible (for VoiceOver)
我不是要解決任何問題。 當然,您可以將isAccessibilityEnabled = true
設置為有效。 我的問題是:為什么默認情況下將其關閉,並且界面生成器中沒有適當的部分。 在我看來,不建議使UITableViewCell子類可訪問。 有沒有更好的方法來使細胞可訪問? 我的意思是將一個單元作為一個可訪問性元素,其中將包含VoiceOver的所有信息。
為什么默認情況下將其關閉
UITableViewCell
可以看作是一個容器,其中嵌入了許多元素(按鈕...),並且按原樣,您不能同時擁有一個父視圖(表視圖單元格)及其子視圖(標簽,按鈕)。 。) 均可通過VoiceOver 訪問 :可以選擇您的單元格或其內容。
默認情況下,必須通過VoiceOver看到內容:在單元格中添加兩個按鈕,然后您將通過啟用/禁用單元格的可訪問性來看到不同之處。
有沒有更好的方法來使細胞可訪問? 我的意思是將一個單元作為一個可訪問性元素,其中將包含VoiceOver的所有信息。
為了達到您的目標,最好的方法是在提供accessibilityLabel的同時使您的單元可accessibilityLabel
並且如果此單元中計划了許多操作(例如,帶有按鈕) ,則添加自定義操作 。
遵循此基本原理可改善用戶體驗:一種獨特的選擇,並可能采取的措施。
如果您不希望讀取每個單元格中的元素,只需定義每個單元格,如下所示:
override func tableView(_ tableView: UITableView,
cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier",
for: indexPath)
cell.isAccessibilityElement = true
cell.accessibilityLabel = "APPEND YOUR LABELS HERE"
// Add everything you need to construct your cell here.
return cell
}
這是最簡單的配置,但是您可能決定訪問單元中的每個元素,在這種情況下,情況就大不相同了:如果需要一些實現示例,請參閱此答案或該 答案 。
就個人而言,我總是對表視圖單元進行子類化,以定義其特征 ,其可訪問性元素數組及其潛在操作 ,從而控制向VoiceOver用戶提供信息的方式:即使它看起來很乏味,我仍然非常靈活第一眼。 ; o)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.