Ich füge meiner iOS-App die Unterstützung für Eingabehilfen hinzu und habe Probleme mit einer Auflistungsansicht in einer meiner Tabellenansichtszellen.UICollectionView in einer UITableViewCell mit Barrierefreiheit
Wenn der Benutzer zum Beispiel (horizontal) von der ersten Zelle zur zweiten Zelle scrollt, liest Accessibility immer noch den Inhalt der ersten Zelle. Wenn ich versuche, in der zweiten Zelle auf eine Ansicht zu tippen, wird links neben der zweiten Zelle (wo die erste Zelle nicht mehr sichtbar wäre) ein leerer Platz hervorgehoben und der Inhalt der ersten Zelle gelesen.
Wenn die Sammlungsansicht nicht in einer Tabellenansichtszelle ist (d. H. Eine Unteransicht einer UIView), geschieht dies nicht.
Ich vermute, das hat etwas mit dem Aufruf UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification)
zu tun und ich habe versucht, es an vielen verschiedenen Orten, aber nichts hat funktioniert.
Die folgenden zwei Screenshots zeigen eine Sammlungsansicht in einer UIView. Die Eingabehilfe ist aktiviert, daher wird sie beim Tippen mit einem schwarzen Rand ausgewählt.
- Wenn der Benutzer die erste Zelle antippt, wird diese ausgewählt.
- Wenn der Benutzer Taps 'Next', in die zweite Zelle geht, und tippt die Zelle, wird die neue Zelle ausgewählt bekommen.
Die nächsten beiden Bilder zeigen die Auflistungsansicht in einer Ansicht Zellentabelle.
Wenn der Benutzer auf die erste Zelle tippt, wird diese ausgewählt und VoiceOver liest korrekt "I'm label 0".
Wenn jedoch die ‚Next‘ Benutzer Hähnen, in die nächste Zelle geht, und tippt die zweite Zelle, wird es nicht ausgewählt und Voiceover wird noch lesen: „Ich bin Label 0“.
Der Code ist here on github verfügbar.
Ich habe dies versucht und obwohl es die neue Zelle liest, wenn es erscheint, wird durch erneutes Antippen der Zelle die vorherige Zelle ausgewählt. – ykay
Ich glaube, vor iOS 10 gibt es ein Problem mit Scroll-Ansichten, die den 'accessibilityFrame' nicht automatisch aktualisiert. Ich bin mir der Details nicht sicher, aber vielleicht möchten Sie sich das genauer ansehen. Ihre Screenshots zeigen, dass der Frame immer noch auf die erste Zelle fokussiert ist. Ist das der Fall mit dem modifizierten Code? – stevekohls
Wenn UIAccessibilityScreenChangedNotification angezeigt wird, wird die zweite Zelle richtig ausgewählt (und VoiceOver liest "I'm Label 1" aus). Bei weiteren Interaktionen wird jedoch immer die erste Zelle erneut ausgewählt. – ykay