Textwert bearbeiten

This page is not available in the language you requested. You have been redirected to the English version of the page.
Link to this page copied to clipboard

Textfeldwerte für Screenreader verfügbar machen

Not for use with personal data

WCAG 2.0 - 4.1.2 A Impact - Critical

Was wir überprüfen

Wenn ein Benutzer in ein Textfeld eingibt, muss der eingegebene Wert programmatisch für unterstützende Technologien wie TalkBack und Voice Access verfügbar gemacht werden.

Fehlendes Beispiel ❌

Android phone mockup with multiple input fields. The email field has a red focus ring and text inside that the user has entered, reading 'jsmith@emaik.com'. The entered value has a typographical error.

value = „E-Mail-Feld“

TalkBack gibt die `contentDescription` anstelle des getippten Textes aus
„E-Mail-Feld, Bearbeitungsfeld“

Der Benutzer kann nicht bestätigen, überprüfen oder korrigieren, was er getippt hat

Bestehendes Beispiel ✅

Android phone mockup with multiple input fields. The email field has a green focus ring and text inside that the user has entered, reading 'jsmith@emaik.com'. The entered value has a typographical error.

value = „jsmith@emaik.com“ (der getippte Text)

TalkBack gibt das Label und den eingegebenen Wert aus
„E-Mail, jsmith@emaik.com, Bearbeitungsfeld“

Der Benutzer kann bestätigen und korrigieren, was er getippt hat

warning

Setzen Sie contentDescription nicht auf ein EditText-Element. Wenn vorhanden, liest TalkBack die Inhaltsbeschreibung anstelle des getippten Wertes vor, was Benutzer daran hindert, ihre Eingaben zu bestätigen, zu überprüfen oder zu korrigieren. Verwenden Sie setLabelFor, um stattdessen ein sichtbares Label mit dem Feld zu verknüpfen.

Auf einen Blick

  • Diese Regel hat eine kritische Auswirkung auf Benutzer
  • Benutzer müssen hören, was sie getippt haben, um ihre Eingaben zu bestätigen und zu korrigieren
  • EditText-Elemente müssen ihren aktueller Wert für unterstützende Technologien übermitteln — nicht nur ihr Label
  • Setzen Sie keinen contentDescription auf ein EditText-Element; dies überschreibt den getippten Wert und stört die Ankündigungen von TalkBack
  • Verknüpfen Sie das Feld mit einem Label mithilfe von setLabelFor(), sodass sowohl der Feldname als auch der Wert verfügbar sind

Auswirkungen auf Benutzer

Personen, die auf TalkBack angewiesen sind, sind von diesem Problem am stärksten betroffen. Wenn ein Texteingabefeld seinen Wert nicht übermittelt, können Benutzer nicht hören, was sie getippt haben. Dies macht es unmöglich, Formulareingaben — wie Benutzernamen, Passwörter oder Adressen — ohne sehende Hilfe zu bestätigen, zu überprüfen oder zu korrigieren.

EditText-Elemente sollten konsequent ihren aktuellen Wert bereitstellen. Wenn der Wert korrekt übermittelt wird, können unterstützende Technologien Eingaben vorhersehbar vermitteln.

Problem mit Textwert bearbeiten bestätigen

  1. TalkBack einschalten
  2. Den Fokus auf das Texteingabeelement richten
  3. Geben Sie etwas Text in das Feld ein
  4. Eines der folgenden Dinge wird geschehen:
    • Barrierefrei: TalkBack gibt den eingegebenen Text zusammen mit dem zugehörigen Label aus
    • Nicht barrierefrei: TalkBack gibt eine Inhaltsbeschreibung anstelle des eingegebenen Wertes oder überhaupt keinen Wert aus

Probleme beheben

Der häufigste Grund für das Versagen von Textwert bearbeiten ist das direkte Setzen eines contentDescription auf ein EditText, was den Wert überschreibt, den TalkBack sonst vorlesen würde. Entfernen Sie alle contentDescription vom Eingabeelement selbst, und verknüpfen Sie stattdessen ein sichtbares Label, damit sowohl der Feldname als auch der eingegebene Wert für Screenreader verfügbar sind.

XML

Verknüpfen Sie ein TextView-Label mit dem EditText-Element mithilfe von setLabelFor(). Setzen Sie keinen contentDescription auf das EditText selbst, da dies verhindert, dass TalkBack den getippten Wert vorliest.

EditText editText = .......; // Role: EditText
TextView label = .......; // Role: Label
label.setLabelFor(editText.getId()); // Associate the label with the field

Compose

Verwenden Sie den label-Parameter auf OutlinedTextField, um ein sichtbares Label mit der Eingabe zu verknüpfen. Setzen Sie keinen contentDescription auf das TextField selbst, da dies den getippten Wert überschreibt.

@Composable
fun ZipCodeInput() {
    OutlinedTextField(
        value = zipCode,
        onValueChange = { zipCode = it },
        label = { Text("Zip Code") }
    )
}

React Native

Vermeiden Sie es, die accessibilityLabel-Eigenschaft auf den aktuellen Wert des Eingabefelds zu setzen. Nutzen Sie sie, um das Feld zu beschreiben, und verwenden Sie die placeholder-Eigenschaft für Beispielwerte. Dies stellt sicher, dass Feldlabel und getippter Wert getrennt und beide zugänglich bleiben.

<TextInput 
   accessibilityLabel='Username'
   accessible={true}
   placeholder='John'
   style={{height: 45, width: 200, backgroundColor: 'azure', fontSize: 20, margin:20}}
 /> 

Kann ich diese Regel ignorieren?

Das Bearbeiten von Textwerten hat eine Kritische Auswirkung für Benutzer, und wir empfehlen dringend, alle durch diese Regel gefundenen Probleme zu beheben. Benutzer, die auf TalkBack angewiesen sind, können nicht bestätigen oder korrigieren, was sie getippt haben, wenn der Wert nicht übermittelt wird – was das Ausfüllen von Formularen unzugänglich macht. Erfahren Sie mehr über Regeln ignorieren.

Ressourcen

Deque University Kursseiten

Hinweis: Der vollständige Zugriff auf die Ressourcen der Deque University erfordert ein Abonnement.

Weitere Ressourcen