Rule ID: has-valid-accessibility-actions
Las acciones de accesibilidad permiten que la tecnología de asistencia invoque programáticamente las acciones de un componente. Para admitir acciones de accesibilidad, un componente debe hacer dos cosas:
- Define la lista de acciones que admite a través de
accessibilityActions
la propiedad. - Implementar una
onAccessibilityAction
función para manejar solicitudes de acción.
La propiedad accessibilityActions
debe contener una lista de objetos de acción. Cada objeto de acción debe contener los siguientes campos:
Nombre | Tipo | Obligatorio |
---|---|---|
name |
cadena | Sí |
label |
cadena | no |
Acciones estándar
El campo name
debe ser uno de los siguientes para las acciones estándar:
Nombre | Soporte de plataforma |
---|---|
magicTap |
Solo iOS |
escape |
Solo iOS |
activate |
Android y iOS |
increment |
Android y iOS |
decrement |
Android y iOS |
longpress |
Solo Android |
El campo label
es opcional para acciones predefinidas y a menudo no lo utilizan las tecnologías de asistencia.
Acciones personalizadas
Los campos name
de acción y label
de valor son obligatorios para acciones personalizadas.
<View
accessibilityActions={[
{name: 'cut', label: 'cut'}
]}
/>
onAccessibilityAction
El único argumento de esta función es un evento que contiene el nombre de la acción a realizar.
<View
accessible={true}
accessibilityActions={[
{name: 'cut', label: 'cut'},
{name: 'copy', label: 'copy'},
{name: 'paste', label: 'paste'},
]}
onAccessibilityAction={(event) => {
switch (event.nativeEvent.actionName) {
case 'cut':
Alert.alert('Alert', 'cut action success');
break;
case 'copy':
Alert.alert('Alert', 'copy action success');
break;
case 'paste':
Alert.alert('Alert', 'paste action success');
break;
}
}}
/>
Por qué es importante
Usar el campo accessibilityActions
name
correcto o asegurarse de que las acciones personalizadas tengan tanto un name
nombre de acción como un label
valor permitirá que los usuarios de tecnología de asistencia utilicen gestos específicos. Si un usuario no puede usar ciertos gestos, es posible que no pueda completar tareas críticas dentro de una aplicación, como realizar una compra o programar una cita.
Cómo solucionar el problema
Asegúrese de que se especifique un name
nombre de acción para las acciones de accesibilidad estándar y que se implemente un onAccessibilityAction
controlador de eventos para la acción. Si está utilizando una acción de accesibilidad personalizada, también debe definir un [insert term] label
.
Ejemplos aprobados
<View
accessibilityActions={[
{name: 'magicTap'},
]}
onAccessibilityAction={(event) => {
switch (event.nativeEvent.actionName) {
case 'magicTap':
Alert.alert('Alert', 'magicTap action success');
break;
}
}}
/>
Ejemplos reprobados
Se define correctamente una accessibilityAction
personalizada, pero no hay una onAccessibilityAction
función para manejar el evento.
<View
accessibilityActions={[
{name: 'cut', label: 'cut'},
]}
/>
Se define una acción personalizada y tiene una onAccessibilityAction
función asociada label
, pero no se establece ninguna.
<View
accessibilityActions={[
{name: 'cut'},
]}
onAccessibilityAction={(event) => {
switch (event.nativeEvent.actionName) {
case 'cut':
Alert.alert('Alert', 'cut action success');
break;
}
}}
/>