Ich arbeite an der Unterstützung von Accessibility für unsere iOS App (in Swift). Ich habe UITableViewCell
s mit einem inneren CollectionView
(mit Innenimage pro Zelle), die wie folgt aussieht:iOS Accessibility auf TableViewCell mit innerem CollectionView
standardmäßig, wenn ich auf der übergeordneten Ansicht (TableViewCell) tippen, liest er die 2-Etiketten, Wenn ich auf die CollectionView-Zellen tippe, liest es den Namen des Bildes in der Zelle. Einige Beschriftungen und Bilder haben jedoch unterschiedliche Zugänglichkeitswerte, daher musste ich sie manuell einstellen.
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
if let tableViewCell = cell as? MyParentTableView {
tableViewCell.isAccessibilityElement = true
tableViewCell.accessibilityLabel = getCorrectAccessibilityLabel()
}
}
func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
// sample only
if let myCell = cell as? MyCollectionViewCell {
myCell.isAccessibilityElement = true
myCell.accessibilityValue = getCorrectAccessibilityLabel()
}
}
Wenn ich das täte, die übergeordneten Ansicht blockiert die ganze Sicht, so kann ich nicht mehr die Zugänglichkeit Feld konzentrieren sich auf die Collection Zellen und Voiceover ist sie nicht mehr ausgelesen werden. Ich habe versucht, zuerst die Zugänglichkeit des TableView zu setzen, dann die Zugänglichkeit jeder CollectionView-Zelle und auch accessibilityElements
in der TableView, aber es scheint nicht zu funktionieren.
// TableViewCell's awakeFromNib function
override func awakeFromNib() {
super.awakeFromNib()
self.collectionView.dataSource = self
self.collectionView.delegate = self
self.accessibilityElements = [self, self.collectionView]
}
EDIT: Posted einige Code.
Schätzen Sie jede Hilfe oder Einsicht. Vielen Dank!