Nombre de elementos anidados
Una vista enfocable debe tener todo el texto visible dentro de su nombre accesible disponible para tecnologías de asistencia como VoiceOver y Voice Control.
Impacto
Las personas que utilizan VoiceOver son las más afectadas. Los desarrolladores pueden agregar párrafos de texto a un elemento de accesibilidad del contenedor, pero es posible que VoiceOver no lea todo el texto dentro del contenedor. Por lo tanto, es posible que las personas que utilizan VoiceOver no sean conscientes de todo el texto que aparece en pantalla.
Confirmación
- Activar VoiceOver
- Enfóquese en el elemento de accesibilidad que contiene el texto.
- Ocurrirá uno de los siguientes casos:
- Inaccesible: VoiceOver no leerá el texto.
- Accesible: VoiceOver leerá todo el texto contenido dentro del cuadro de enfoque.
Cómo solucionarlo
UIKit
Un problema detectado por esta regla se debe al uso del valor predeterminado accessibilityLabel
para un elemento de accesibilidad que contiene varios elementos de texto.
Para solucionarlo, exija que cualquier elemento de accesibilidad que contenga varios elementos de texto tenga todo el texto visible en su 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 encontrado por esta regla dentro de SwiftUI indica un uso incorrecto del accessibilityElement
modificador además del accessibilityElement(children:..)
modificador.
Se recomienda utilizar estos modificadores en una vista de agrupación en lugar de elementos individuales. Tenga en cuenta el orden y las AccessibilityChildBehavior
especificaciones que se indican a continuación.
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 encontrado por esta regla dentro de las vistas de React Native indica un mal uso de la accessible
propiedad y/o la accessibilityElementsHidden
propiedad.
Si agrega estas propiedades explícitamente, asegúrese de que sean true
para que el texto visible permanezca disponible para los usuarios de tecnología de asistencia.