Acción Inaccesible
Asegúrese de que los elementos interactivos se puedan activar con TalkBack
Esta es una regla experimental y, por lo tanto, sus resultados se consideran en fase beta. Obtén más información sobre reglas experimentales y cómo puedes ayudar a mejorarlas.
Qué Verificamos
Un elemento interactivo debe poder ser activado por tecnología de asistencia. Esta regla verifica que la acción asociada con un elemento interactivo pueda ser enfocada y y activada usando TalkBack o Switch Access.
Ejemplo Fallido ❌
TalkBack puede focus el interruptor de 'Notificaciones' pero cannot activate it
TalkBack anuncia "Notifications, on." - no se proporciona ni el rol ni la pista de activación
El doble toque no hace nada; los usuarios no tienen forma de cambiar la configuración
Ejemplo Exitoso ✅
TalkBack puede focus and activate el interruptor de 'Notificaciones'
TalkBack anuncia "Notifications, switch button, on. Double-tap to activate."
El rol y la pista de activación están presentes; los usuarios saben exactamente cómo interactuar con el control
A Simple Vista
- Esta regla tiene un impacto crítico para los usuarios
- Esta regla señala elementos interactivos que la tecnología de asistencia no puede enfocar o activar
- Los elementos interactivos no están disponibles para TalkBack cuando se marca como no importantes para la accesibilidad
- Un elemento padre clickeable con elementos hijos que tienen texto son inaccesibles cuando están ocultos para la tecnología de asistencia
Impacto para los Usuarios
Los usuarios de tecnología de asistencia son los más afectados. Cuando TalkBack puede enfocar un elemento interactivo pero no puede activarlo, los usuarios pueden ser incapaces de completar acciones críticas, como enviar un formulario, cambiar una configuración o navegar a otra pantalla. Esto crea una barrera completa para las personas que dependen exclusivamente de la tecnología de asistencia para interactuar con la aplicación.
La versión de Android, el dispositivo y el fabricante pueden influir en la detección del problema.
Confirmar Problema de Acción Inaccesible
- Encienda TalkBack o Switch Access
- Intente enfocar e interactuar con el elemento
- Ocurrirá una de las siguientes situaciones:
- Inaccesible: El elemento no se puede enfocar o su acción no se puede activar
- Accesible: El elemento está enfocado y su acción se puede activar
Corregir Problemas
Para resolver un problema de Acción Inaccesible, asegúrese de que el elemento interactivo no esté explícitamente oculto de la tecnología de asistencia. Las vistas que las personas pueden acceder sin tecnología de asistencia deben estar igualmente disponibles para quienes la usan.
XML
No establezca la propiedad importantForAccessibility en "no" en vistas pulsables. Si este atributo está presente, elimínelo o configúrelo en "yes" o "auto".
Compose
No marque las vistas de Compose pulsables como invisibleToUser(). Elimine este modificador para asegurar que el elemento esté disponible para TalkBack y Switch Access.
Button(onClick = { },
modifier = Modifier.semantics {
// Remove invisibleToUser() to make this element accessible
invisibleToUser()
}
) {
Text("Click here")
}
FloatingActionButton(onClick = { }) {
Image(
painter = painterResource(id = R.drawable.floating_button),
contentDescription = "floating button",
Modifier.semantics {
// Remove invisibleToUser() to make this element accessible
invisibleToUser()
}
)
}React Native
Este problema es poco común para los controles táctiles o presionables estándar en React Native, pero puede ocurrir con elementos interactivos personalizados o cuando importantForAccessibility se establece explícitamente en 'no' o 'no-hide-descendants' en un elemento interactivo.
Opción 1: Permitir que la vista padre maneje el enfoque
Establezca el importantForAccessibility de la vista contenedora en 'yes' y asigne el accessibilityRole y accessibilityLabel apropiados. Establezca importantForAccessibility en 'no-hide-descendants' en cualquier elemento hijo decorativo para que TalkBack no los enfoque por separado:
<View
importantForAccessibility='yes'
accessibilityRole='button'
accessibilityLabel='Learn more about Deque'
onTouchStart={openLink}
>
<Image
source={DequeLogo}
importantForAccessibility='no-hide-descendants'
style={{ width: 100, height: 100 }}
/>
</View>Opción 2: Permitir que el elemento maneje el enfoque por sí mismo
Establezca importantForAccessibility='yes' y accessibilityRole directamente en el control:
<Image
source={DequeLogo}
importantForAccessibility='yes'
accessibilityRole='imagebutton'
accessibilityLabel='Learn more about Deque'
onTouchStart={openLink}
style={{ width: 100, height: 100 }}
/>Flutter
Los widgets de Material de Flutter (ElevatedButton, IconButton, etc.) exponen acciones de toque al lector de pantalla automáticamente. Al construir elementos interactivos personalizados con GestureDetector, envuélvelos en MergeSemantics con un widget Semantics para asegurar que el lector de pantalla pueda descubrir y activar el elemento en una sola parada de enfoque.
MergeSemantics(
child: Semantics(
button: true,
label: 'Archive item',
child: GestureDetector(
onTap: () {},
child: Container(
padding: const EdgeInsets.all(12.0),
color: Colors.green.shade100,
child: const Text('Archive item'),
),
),
),
)¿Puedo Ignorar Esta Regla?
Acción Inaccesible tiene un impacto crítico para los usuarios, y recomendamos encarecidamente solucionar estos problemas. Dado que es una regla experimental, debes verificar los resultados manualmente. Si has confirmado que el elemento es activable por TalkBack, puede ser aceptable ignorar el hallazgo. Obtén más información sobre ignorando reglas.
Recursos
Páginas de cursos de Deque University
Nota: El acceso completo a los recursos de Deque University requiere una suscripción.
Otros recursos
- Pautas de Accesibilidad para el Contenido Web (WCAG) 2.1, Recomendación del W3C
- Documentos de comprensión de WCAG 2.1
