Widersprüchliche Merkmale
Weisen Sie einem Element keine widersprüchlichen Zugänglichkeitsmerkmale zu
Was wir überprüfen
Jede Ansicht - ein interaktives Element wie eine Schaltfläche, ein Label oder eine benutzerdefinierte Steuerung - kann mit Zugänglichkeitsmerkmale versehen werden. Diese Metadaten informieren VoiceOver, welche Art von Element es ist und wie damit interagiert werden soll. Diese Regel überprüft, dass keiner Ansicht Merkmale zugewiesen werden, die einander widersprechen oder die VoiceOver-Navigation beeinträchtigen.
Diese Regel setzt eine bewährte Vorgehensweise durch, die unter Apples UIKit Accessibility Traits definiert wurde. Sie können diese Regel im Mobiles Dashboard deaktivieren oder indem Sie die Regel in für iOS geschriebenen Tests ignorieren.
Fehlerhaftes Beispiel ❌
Einer Schaltfläche wird zugewiesen both the button and link traits
VoiceOver kündigt two conflicting roles gleichzeitig an:
„Artikel lesen, Knopf, Link“
Dies ist verwirrend und irreführend — ein einzelnes Element sollte niemals zwei widersprüchliche Rollen haben
Gutes Beispiel ✅
Dem Element wird zugewiesen only the link trait
VoiceOver kündigt eine einzige, klare Rolle an:
„Artikel lesen, Link“
Navigationsgesten funktionieren wie für die zugewiesene Rolle erwartet
Auf einen Blick
- Diese Regel hat eine kritische Auswirkung für die Nutzer
- Zugänglichkeitsmerkmale sagen VoiceOver, was ein Element ist und wie man damit interagiert - widersprüchliche Merkmale erzeugen verwirrendes oder fehlerhaftes Verhalten
- Häufige Konflikte: Rollenmerkmale wie „Knopf“ + „Link“, oder Navigationsmerkmale wie „Header“ + „einstellbar“
Auswirkungen auf die Nutzer
Menschen, die VoiceOver und Switch Control verwenden, sind am meisten betroffen. Wenn ein Element widersprüchliche Merkmale hat, kann VoiceOver zwei Rollen gleichzeitig ankündigen (z. B. „Knopf, Link“), was verwirrend und irreführend ist. Bestimmte Merkmalskombinationen - wie „Header“ und „einstellbar“ - können auch die VoiceOver-Navigationsgesten beeinträchtigen, sodass Teile des Bildschirms unerreichbar werden.
Widersprüchliche Merkmale bestätigen
- VoiceOver einschalten
- Auf das Element fokussieren
- Eines der folgenden wird geschehen:
- Unzugänglich: VoiceOver kündigt zwei widersprüchliche Rollen an (wie „Knopf“ und „Link“)
- Unzugänglich: Eine VoiceOver-Navigationsgeste funktioniert nicht mehr (z. B. die gleichzeitige Verwendung von „Header“ und „einstellbar“)
- Zugänglich: Alle Rollen sind eindeutig und Navigationsgesten funktionieren wie beabsichtigt
Probleme beheben
Um ein Problem mit widersprüchlichen Merkmalen zu lösen, stellen Sie sicher, dass jedes Element nur ein Rollenmerkmal hat und dass alle zugewiesenen Merkmale miteinander kompatibel sind.
UIKit
So beheben Sie es im Storyboard:
- Wählen Sie das Element mit widersprüchlichen Zugänglichkeitsmerkmalen aus.
- Stellen Sie sicher, dass das Inspektor-Panel sichtbar ist.
- Wählen Sie den Identitätsinspektor aus.
- Unter Zugänglichkeit finden Sie die Kategorie Merkmale und deaktivieren Sie das widersprüchliche Merkmal.
Um es im Code zu beheben, entfernen Sie das widersprüchliche Merkmal. Zum Beispiel, wenn einer Schaltfläche fälschlicherweise sowohl .button als auch .link zugewiesen ist:
button.accessibilityTraits = [.button, .link]Behalten Sie nur das Merkmal, das das tatsächliche Verhalten des Elements widerspiegelt. Wenn das Element sich wie ein Link verhält, entfernen Sie das Knopfmerkmal:
button.accessibilityTraits = .linkSwiftUI
Verwenden Sie .accessibility(addTraits:) und .accessibility(removeTraits:) zusammen, um sicherzustellen, dass das Element nur die Merkmale hat, die sein Verhalten genau widerspiegeln. Wenn eine Schaltfläche zum Beispiel wie ein Link wirkt, entfernen Sie das Standard-Schaltflächenmerkmal und fügen Sie das Linkmerkmal hinzu:
var body: some View {
Button(action: { openLink() },
label: {
Text("Visit the website").padding()
})
.accessibility(addTraits: .isLink)
.accessibility(removeTraits: .isButton)
}React Native
Diese Regel wird bei React Native-Elementen wahrscheinlich nicht ausgelöst, da accessibilityRole nur einen Wert akzeptiert. Verwenden Sie den accessibilityRole-Wert, der das erwartete Verhalten des Elements am genauesten beschreibt:
<Button
title={'Learn more about axeDevTools'}
accessible={true}
accessibilityRole='link'
onPress={goToLink}
/>Kann ich diese Regel ignorieren?
Konfliktierende Merkmale haben einen Kritische Auswirkungen für Benutzer, und wir empfehlen, Maßnahmen zur Behebung dieses Problems zu ergreifen. Auch wenn diese Regel eine Apple-Best-Practice durchsetzt, ist sie sehr einflussreich. Wenn eine Steuerung konfliktierende Merkmale hat, können VoiceOver-Nutzer möglicherweise überhaupt nicht mit ihr interagieren. Dennoch ist es möglich, diese Regel im Mobile Dashboard zu deaktivieren oder einzelne Ergebnisse in Ihren iOS-Tests zu ignorieren. Erfahren Sie mehr über Regeln ignorieren.
Ressourcen
- Apple Entwicklerdokumentation
