Nome degli elementi nidificati
Una vista focalizzabile dovrebbe avere tutto il testo visibile all'interno del suo nome accessibile, disponibile per tecnologie assistive come VoiceOver e Controllo vocale.
Impatto
Le persone più colpite sono quelle che utilizzano VoiceOver. Gli sviluppatori possono aggiungere paragrafi di testo a un elemento di accessibilità del contenitore, ma VoiceOver potrebbe non leggere tutto il testo all'interno del contenitore. Per questo motivo, chi utilizza VoiceOver potrebbe non essere consapevole di tutto il testo visualizzato sullo schermo.
Conferma
- Attiva VoiceOver
- Focalizzarsi sull'elemento di accessibilità contenente il testo
- Si verificherà una delle seguenti situazioni:
- Inaccessibile: VoiceOver non leggerà il testo.
- Accessibile: VoiceOver leggerà tutto il testo contenuto nella casella di focalizzazione.
Come risolvere
UIKit
Un problema riscontrato da questa regola è causato dall'utilizzo del valore predefinito accessibilityLabel
per un elemento di accessibilità contenente più elementi di testo.
Per risolvere il problema, fai in modo che tutti gli elementi di accessibilità contenenti più elementi di testo abbiano tutto il testo visibile nel loro accessibilityLabel
:
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
Un problema riscontrato da questa regola in SwiftUI indica l'uso improprio del modificatore [inserire termine glossario] accessibilityElement
oltre al modificatore [inserire termine glossario] accessibilityElement(children:..)
.
Si consiglia di utilizzare questi modificatori in una vista di raggruppamento anziché su singoli elementi. Si noti l' AccessibilityChildBehavior
ordine specificato di seguito.
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
Un problema riscontrato da questa regola nelle viste di React Native indica un uso improprio della proprietà accessible
e/o della proprietà accessibilityElementsHidden
.
Se si aggiungono esplicitamente queste proprietà, assicurarsi che true
ciò avvenga in modo tale che il testo visibile resti disponibile agli utenti di tecnologie assistive.