Conflicterende Eigenschappen
Ken geen tegenstrijdige toegankelijkheidseigenschappen toe aan hetzelfde element
Wat We Controleren
Elke weergave - een interactief element zoals een knop, label of aangepaste bediening - kan worden toegewezen met toegankelijkheidseigenschappen. Deze metadata vertelt VoiceOver welk type element het is en hoe ermee te interageren. Deze regel controleert of er geen weergave is toegewezen met eigenschappen die elkaar tegenspreken of interfereren met VoiceOver-navigatie.
Deze regel handhaaft een best practice die is gedefinieerd onder Apple's UIKit Accessibility Traits. U kunt deze regel uitschakelen via het Mobiele Dashboard of door de regel te negeren in tests geschreven voor iOS.
In Een Oogopslag
- Deze regel heeft een kritieke impact voor gebruikers
- Toegankelijkheidseigenschappen vertellen VoiceOver wat een element is en hoe ermee om te gaan - tegenstrijdige eigenschappen zorgen voor verwarrend of defect gedrag
- Veelvoorkomende conflicten: rolkenmerken zoals „knop“ + „link“, of navigatie-eigenschappen zoals „header“ + „aanpasbaar“
Impact op Gebruikers
Mensen die VoiceOver en Switch Control gebruiken, worden het meest beïnvloed. Wanneer een element tegenstrijdige eigenschappen heeft, kan VoiceOver twee rollen tegelijkertijd aankondigen (bijvoorbeeld „Knop, Link“), wat verwarrend en misleidend is. Bepaalde eigenschapcombinaties - zoals „header“ en „aanpasbaar“ - kunnen ook VoiceOver-navigatiegebaren verstoren, waardoor delen van het scherm onbereikbaar worden.
Bevestig Probleem met Conflicterende Eigenschappen
- Schakel VoiceOver in
- Focus op het element
- Een van de volgende dingen gebeurt:
- Onbereikbaar: VoiceOver kondigt twee conflicterende rollen aan (zoals „Knop“ en „Link“)
- Onbereikbaar: Een VoiceOver-navigatiegebaar stopt met werken (bijvoorbeeld door zowel „header“ als „aanpasbaar“ samen te gebruiken)
- Bereikbaar: Alle rollen zijn onderscheidend en navigatiegebaren werken zoals bedoeld
Los Problemen op
Om een probleem met Conflicterende Eigenschappen op te lossen, zorg ervoor dat elk element slechts één rolkenmerk heeft en dat alle toegewezen eigenschappen compatibel zijn met elkaar.
UIKit
Om op te lossen in het Storyboard:
- Selecteer het element met conflicterende toegankelijkheidseigenschappen.
- Zorg ervoor dat het Inspector-paneel zichtbaar is.
- Selecteer de Identity Inspector.
- Bij Toegankelijkheid, zoek de categorie Eigenschappen en deselecteer de conflicterende eigenschap.
Om op te lossen in code, verwijder de conflicterende eigenschap. Bijvoorbeeld, als een knop ten onrechte zowel .button als .link:
button.accessibilityTraits = [.button, .link]Houd alleen de eigenschap die het werkelijke gedrag van het element weerspiegelt. Als het element zich als een link gedraagt, verwijder dan de knop-eigenschap:
button.accessibilityTraits = .linkSwiftUI
Gebruik .accessibility(addTraits:) en .accessibility(removeTraits:) samen om ervoor te zorgen dat het element alleen de eigenschappen heeft die zijn gedrag nauwkeurig weerspiegelen. Bijvoorbeeld, als een knop een link nabootst, verwijder dan de standaard knop-eigenschap en voeg de link-eigenschap toe:
var body: some View {
Button(action: { openLink() },
label: {
Text("Visit the website").padding()
})
.accessibility(addTraits: .isLink)
.accessibility(removeTraits: .isButton)
}React Native
Deze regel zal waarschijnlijk niet van toepassing zijn op React Native-elementen, omdat accessibilityRole slechts één waarde accepteert. Gebruik de accessibilityRole waarde die het gedrag van het element het beste beschrijft:
<Button
title={'Learn more about axeDevTools'}
accessible={true}
accessibilityRole='link'
onPress={goToLink}
/>Kan ik deze regel negeren?
Conflicterende eigenschappen hebben een kritische impact voor gebruikers, en we raden aan stappen te ondernemen om dit probleem te verhelpen. Hoewel deze regel een best practice van Apple afdwingt, is de impact aanzienlijk. Als een besturingselement conflicterende eigenschappen heeft, kunnen VoiceOver-gebruikers er mogelijk helemaal niet mee interactie hebben. Toch is het mogelijk om deze regel uit te schakelen via het mobiele dashboard of individuele bevindingen in je iOS-tests te negeren. Lees meer over regels negeren.
Bronnen
- Apple Developer Documentatie
