CheckBox Naam
Elk CheckBox-element moet een toegankelijke naam hebben die beschikbaar is voor hulpmiddelen zoals TalkBack en Voice Access.
Impact
Mensen die TalkBack gebruiken, worden het meest getroffen door toegankelijkheidsproblemen die door deze regel worden gevonden.
Bevestiging
- Zet TalkBack aan
- Probeer de controle te focussen
- Een van de volgende dingen zal gebeuren:
- Niet toegankelijk: TalkBack kondigt alleen de waarde en rol aan.
- Toegankelijk: Zowel de naam als de waarde worden door TalkBack voorgelezen.
Hoe te repareren
XML
Geef een expliciete naam voor de CheckBox controle door gebruik te maken van een TextView en deze te koppelen aan uw CheckBox element.
Zowel Text als ContentDescription eigenschappen kunnen niet samen worden gebruikt.
CheckBox checkBox = .......; // Role: CheckBox
TextView label = .......; // Role: Label
label.setLabelFor(checkBox.getId()); // Associate the Checkbox with its NameCompose
Omhul de checkbox en tekstcomponent binnen een element met de Checkbox toegankelijkheidsrol en zorg ervoor dat de actie van de controle kan worden uitgevoerd op de bovenliggende component.
Row(modifier = Modifier
.toggleable(
value = checkedState,
enabled = true,
role = Role.Checkbox,
onValueChange = { setCheckBoxState(!checkedState) }
)
.semantics(mergeDescendants = true) { }
.constrainAs(labeledTextField) {
setConstraints(top = parent.top, start = parent.start, end = parent.end)
}
) {
Checkbox(
checked = checkedState,
modifier = Modifier.padding(16.dp),
onCheckedChange = null
)
Text(text = "Get Marketing emails", modifier = Modifier.padding(16.dp))
}React Native
Opmerking: de React Native checkboxcomponent is verouderd, dus dit is alleen van toepassing bij het gebruiken van een checkboxcomponent van derden of bij het maken van een aangepaste component.
Om een checkbox en label in React Native te combineren, kunt u beide componenten omhullen binnen een TouchableOpacity component:
<TouchableOpacity
style={{flexDirection:'row', alignItems: 'center',}}
onPress={() => {
setSelection(!isSelected)
}
}
accessible={true}
accessibilityLabel={"Do you like React Native?"}
accessibilityRole='checkbox'>
<CheckBox
importantForAccessibility='no-hide-descendants'
value={isSelected}
onValueChange={setSelection}
style={styles.checkbox}
/>
<Text>Do you like React Native?</Text>
</TouchableOpacity>Om ervoor te zorgen dat dit goed werkt en alle nodige context biedt voor zowel hulpmiddelen als niet-hulpmiddelen gebruikers:
-
Zorg ervoor dat de
TouchableOpacityview deaccessibleeigenschap op true heeft staan, zodat de groep samen gefocust wordt voor gebruikers van hulpmiddelen. -
Zorg ervoor dat de
accessibilityLabeleigenschap van deTouchableOpacitycomponent is ingesteld op exact dezelfde waarde als het tekstlabel. -
Stel de
TouchableOpacitycomponentenaccessibilityRolein omcheckboxde juiste context te bieden aan gebruikers van hulpmiddelen. -
Stel de
CheckBoxcomponentenimportantForAccessibilityeigenschap in opno-hide-descendantszodat de component niet individueel kan worden gefocust. -
Voeg een actie toe via
onPressaan deTouchableOpacitycomponent voor het afhandelen van het gedrag van de checkbox wanneer deze geactiveerd wordt.
