0

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

enter image description here

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!

Antwort

0

Wenn ich das Problem verstanden habe, dass Sie nicht auf die Sammlung klicken können, weil immer die App denkt, dass Sie auf die Zeile klicken, richtig? Haben Sie versucht, die Auswahl der Zeile zu deaktivieren und eine unsichtbare Ansicht unter die Sammlung mit der gleichen Breite und Höhe der Zeile und mit einer TouchReognition zu legen? Wenn du auf die Ansicht klickst, klickst du auf die Zeile, aber ich denke, das kann dein Problem lösen.

Noch ein Tipp: Legen Sie die Einstellungen des Delegaten nicht in die Methode watchFromNib, weil diese Methode manchmal nicht aufgerufen wird. Es hängt von den erstellten Objekten ab. Lege es immer in die viewDidLoad().

Verwandte Themen