簡體   English   中英

為什么UITableViewCell無法訪問(對於VoiceOver)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM