Name verschachtelter Elemente
Eine fokussierbare Ansicht sollte den gesamten sichtbaren Text innerhalb ihres zugänglichen Namens verfügbar für unterstützende Technologien wie VoiceOver und Sprachsteuerung haben.
Auswirkung
Am stärksten betroffen sind Benutzer von VoiceOver. Entwickler können einem Container-Zugänglichkeitselement Textabsätze hinzufügen, VoiceOver liest jedoch möglicherweise nicht den gesamten Text im Container. Daher ist es möglich, dass Benutzer von VoiceOver sich nicht aller Texte auf dem Bildschirm bewusst sind.
Bestätigung
- VoiceOver aktivieren
- Konzentrieren Sie sich auf das Zugänglichkeitselement, das den Text enthält
- Eines der folgenden Ereignisse wird eintreten:
- Nicht zugänglich: VoiceOver liest den Text nicht vor.
- Zugänglich: VoiceOver liest den gesamten Text im Fokusfeld vor.
So beheben Sie das Problem
UIKit
Ein von dieser Regel gefundenes Problem wird durch die Verwendung des Standard-accessibilityLabel
für ein Barrierefreiheitselement verursacht, das mehrere Textelemente enthält.
Um das Problem zu beheben, erzwingen Sie, dass in seinem accessibilityLabel
jedes Zugänglichkeitselement, das mehrere Textelemente enthält, den gesamten sichtbaren Text hat:
let paragraphOne = UILabel()
let paragraphTwo = UILabel()
let accessibilityElement = UIView()
paragraphOne.text = "One paragraph of text about something."
paragraphTwo.text = "A second paragraph of text about something."
accessibilityElement.addSubviews([paragraphOne, paragraphTwo])
// Update the accessibility element's accessibilityLabel, so both paragraphs are read by VoiceOver.
view.accessibilityLabel = "\(paragraphOne.text) \(paragraphTwo.text)"
SwiftUI
Ein durch diese Regel in SwiftUI gefundenes Problem weist auf einen Missbrauch des Modifikators accessibilityElement
zusätzlich zum Modifikator accessibilityElement(children:..)
hin.
Es wird empfohlen, diese Modifikatoren in einer Gruppierungsansicht statt in einzelnen Elementen zu verwenden. Beachten Sie die unten angegebene Reihenfolge und AccessibilityChildBehavior
Spezifikation.
VStack(alignment: .leading) {
HStack {
Text("Title:")
book.title.map({ title in
Text(title)
})
}
HStack {
Text("Author:")
book.author.map({ author in
Text(author)
})
}
HStack {
Text("Genre:")
book.genre.map({ genre in
Text(genre)
})
}
}
.accessibilityElement()
.accessibilityElement(children: .combine)
React Native
Ein von dieser Regel in React Native-Ansichten gefundenes Problem weist auf einen Missbrauch der accessible
Eigenschaft und/oder der accessibilityElementsHidden
Eigenschaft hin.
Wenn Sie diese Eigenschaften explizit hinzufügen, achten Sie darauf, dass sie true
sind, damit der sichtbare Text für Benutzer unterstützender Technologien weiterhin verfügbar bleibt.