Проблема в том, что когда ячейки можно использовать повторно, accesibilityLabel
не работает и VoiceOver читает ноль или один , когда я переключаюсь на другую ячейку с VoiceOver
Как мне установить значение accessibilityLabel при загрузке новых ячеек?
Я прилагаю свой код
Celda.swift
class Celda: UITableViewCell {
@IBOutlet weak var label: UILabel!
func setup(_ number: String) {
label.text = number
}
override var isAccessibilityElement: Bool {
get {return false }
set { self.isAccessibilityElement = newValue}
}
private var _accessibilityElements: [Any]?
override var accessibilityElements: [Any]? {
get {
if let _accessibilityElements = _accessibilityElements {
return _accessibilityElements
}
var elements = [UIAccessibilityElement]()
let cellAccessibility = UIAccessibilityElement(accessibilityContainer: self)
cellAccessibility.accessibilityFrameInContainerSpace = self.contentView.frame
cellAccessibility.accessibilityLabel = label.text
cellAccessibility.isAccessibilityElement = true
elements.append(cellAccessibility)
_accessibilityElements = elements
return _accessibilityElements
}
set {
_accessibilityElements = newValue
}
}
}
ViewController.swift
class ViewController: UIViewController {
var elementos = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31"];
@IBOutlet weak var tabla: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tabla.dataSource = self
tabla.delegate = self
tabla.reloadData()
}
}
extension ViewController: UITableViewDataSource, UITableViewDelegate {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return elementos.count;
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let celda: Celda = tableView .dequeueReusableCell(withIdentifier: "Celda", for: indexPath) as! Celda
celda.setup(elementos[indexPath.row])
return celda
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 900.0
}
}
Могу ли я установить accessibilityLabel для других ячеек?
Мне нужно масштабируемое решение, которое должно быть UIAccessibilityLabel
кто определяет его accessiblityLabel