Barrierefreiheit wird bei der Entwicklung von Apps immer wichtiger. Spätestens seit dem European Accessibility Act, der ab 2025 für viele digitale Produkte gilt, steigt der Druck auf Unternehmen, ihre Anwendungen zugänglich zu gestalten. Für öffentliche Stellen in Deutschland ist Barrierefreiheit ohnehin verpflichtend – hier gilt die BITV 2.0 (Barrierefreie-Informationstechnik-Verordnung).
Doch auch unabhängig von gesetzlichen Anforderungen lohnt sich Accessibility: In Deutschland leben über 10 Millionen Menschen mit Behinderungen. Eine barrierefreie App erreicht also nicht nur mehr Nutzer, sondern verbessert oft auch die allgemeine Benutzerfreundlichkeit.
Als App Entwickler mit Fokus auf Android, Kotlin Multiplatform und iOS/SwiftUI achte ich deshalb in meiner täglichen Arbeit darauf, Accessibility möglichst früh in den Entwicklungsprozess zu integrieren.
In diesem Artikel teile ich typische Herausforderungen und Best Practices aus der Praxis.
Was bedeutet Barrierefreiheit bei Mobile Apps?
Die meisten Accessibility-Richtlinien basieren auf den WCAG (Web Content Accessibility Guidelines). Sie definieren vier grundlegende Prinzipien:
1. Wahrnehmbar (Perceivable)
Alle Informationen müssen für Nutzer wahrnehmbar sein – auch mit Assistenztechnologien wie Screenreadern.
Typische Anforderungen:
- Unterstützung von Screenreadern (TalkBack / VoiceOver)
- ausreichende Farbkontraste
- skalierbare Schriftgrößen
- Alternativtexte für Bilder
Beispiel: Image mit Content Description (Jetpack Compose)
Image(
painter = painterResource(id = R.drawable.profile_picture),
contentDescription = "Profilbild des Nutzers"
)
Ohne contentDescription kann ein Screenreader nicht erklären, was das Bild darstellt.
2. Bedienbar (Operable)
Alle Funktionen müssen für Nutzer bedienbar sein – auch ohne komplexe Gesten oder präzise Motorik.
Wichtige Aspekte:
- ausreichend große Touch Targets
- klare Fokusnavigation
- keine zwingenden Mehrfinger-Gesten
Empfohlene Mindestgröße:
- Android: 48dp
- iOS: 44pt
Beispiel: Mindestgröße für Touch Targets
Button(
onClick = { openSettings() },
modifier = Modifier.sizeIn(minWidth = 48.dp, minHeight = 48.dp)
) {
Text("Einstellungen")
}
3. Verständlich (Understandable)
Interfaces müssen verständlich sein – sowohl visuell als auch für Screenreader.
Typische Maßnahmen:
- klare Labels
- verständliche Fehlermeldungen
- konsistente Navigation
Beispiel: Zugängliches Eingabefeld
TextField(
value = email,
onValueChange = { email = it },
label = { Text("E-Mail-Adresse") }
)
Der Screenreader kann so den Zweck des Feldes korrekt ankündigen.
4. Robust (Robust)
Apps müssen mit unterschiedlichen Assistenztechnologien kompatibel sein.
Das bedeutet:
- korrekt gesetzte Accessibility-Properties
- semantische Struktur der UI
- Unterstützung von Screenreadern und anderen Hilfsmitteln
Beispiel: Accessibility Semantics in Compose
Modifier.semantics {
contentDescription = "Profilbild"
}
Typische Accessibility Probleme in Apps
In vielen bestehenden Apps sieht man immer wieder ähnliche Probleme.
Fehlende Content Descriptions
Ein häufiger Fehler ist das Fehlen von Beschreibungen für Icons oder Bilder.
Problematisches Beispiel
Icon(
imageVector = Icons.Default.Settings,
contentDescription = null
)
Ein Screenreader überspringt dieses Element oder kann seinen Zweck nicht erklären.
Besser
Icon(
imageVector = Icons.Default.Settings,
contentDescription = "Einstellungen öffnen"
)
Zu kleine Touch Targets
Gerade bei minimalistischen Designs werden Buttons oder Icons oft zu klein.
Problematisch:
- schwer zu bedienen für Menschen mit motorischen Einschränkungen
- erhöhte Fehlbedienungen
Empfehlung:
- mindestens 48dp (Android) oder 44pt (iOS)
Falsche Fokus-Reihenfolge
Besonders bei komplexen Layouts kann die Fokusreihenfolge für Screenreader unlogisch werden.
Typisches Beispiel:
- UI wird mit mehreren Containern aufgebaut
- visuelle Reihenfolge ≠ Accessibility-Reihenfolge
Das führt dazu, dass Screenreader Inhalte in einer verwirrenden Reihenfolge vorlesen.
Nur Farbe als Information
Ein Klassiker im UI-Design:
- Grün = Erfolg
- Rot = Fehler
Für Menschen mit Farbsehschwäche funktioniert das nicht.
Beispiel
Text(
text = "Fehler: Passwort zu kurz",
color = Color.Red
)
Besser ist zusätzlich eine klare textliche Beschreibung.
Best Practices für barrierefreie Apps
Aus meiner Erfahrung gibt es einige einfache Regeln, die einen großen Unterschied machen.
Accessibility von Anfang an mitdenken
Accessibility nachträglich einzubauen ist oft aufwendig.
Besser:
- schon im Designprozess
- im Design System
- bei Code Reviews
Fragen, die ich mir dabei stelle:
- Kann ein Screenreader dieses Element verstehen?
- Ist der Touch Target groß genug?
- Funktioniert die UI bei großer Schrift?
Screenreader regelmäßig testen
Der einfachste Accessibility-Test ist oft der effektivste.
Android:
- TalkBack aktivieren
- durch die App navigieren
iOS:
- VoiceOver testen
Dabei fallen viele Probleme sofort auf:
- fehlende Labels
- falsche Fokusreihenfolge
- unverständliche Ansagen
Semantische Komponenten nutzen
Moderne UI-Frameworks unterstützen Accessibility bereits sehr gut.
Jetpack Compose
Row(
modifier = Modifier.semantics {
contentDescription = "Profil des Nutzers öffnen"
}
)
SwiftUI
Image("profile")
.accessibilityLabel("Profilbild")
Damit können Screenreader den Zweck eines Elements korrekt erklären.
Dynamische Schriftgrößen unterstützen
Viele Nutzer erhöhen die Schriftgröße systemweit.
Apps sollten darauf reagieren.
Android:
spstattdpfür Schriftgrößen
iOS:
- Dynamic Type
Compose Beispiel
Text(
text = "Willkommen",
fontSize = 18.sp
)
Herausforderungen bei BITV-konformen Apps
In der Praxis gibt es einige typische Herausforderungen.
Legacy Apps
Ältere Apps wurden oft ohne Accessibility entwickelt.
Typische Probleme:
- fehlende Content Descriptions
- starre Layouts
- keine Skalierung für große Schrift
Hier braucht es oft Refactoring statt kleiner Fixes.
Komplexe Custom Components
Standard-UI-Komponenten sind meist gut zugänglich.
Schwieriger wird es bei:
- Charts
- Canvas Zeichnungen
- Karten
- interaktiven Visualisierungen
Hier muss oft ein eigener Accessibility Tree aufgebaut werden.
Design vs Accessibility
Manchmal kollidieren Designwünsche mit Accessibility-Anforderungen.
Beispiele:
- zu geringer Farbkontrast
- Icon-only Navigation
- sehr kleine UI-Elemente
Hier hilft eine enge Zusammenarbeit zwischen:
- Design
- Produkt
- Entwicklung
Meine persönliche Accessibility-Checkliste
Bei der Entwicklung neuer Features gehe ich meist eine einfache Checkliste durch:
- sinnvolle Content Descriptions für Icons und Bilder
- Touch Targets ≥ 48dp
- ausreichender Farbkontrast
- TalkBack / VoiceOver Test durchführen
- Unterstützung von Dynamic Font Scaling
- sinnvolle Focus Navigation
Diese Punkte lassen sich meist mit relativ wenig Aufwand umsetzen, verbessern aber die Nutzbarkeit einer App erheblich.
Fazit
Barrierefreiheit ist kein optionales Feature, sondern ein wichtiger Bestandteil moderner App-Entwicklung.
Viele Accessibility-Probleme lassen sich vermeiden, wenn man sie früh im Entwicklungsprozess berücksichtigt. Gleichzeitig verbessert eine zugängliche App häufig auch die allgemeine User Experience für alle Nutzer.
Als Entwickler lohnt es sich daher, Accessibility nicht nur als Pflicht zu sehen, sondern als Teil von guter Softwarequalität.
Wenn Sie Unterstützung bei der Entwicklung barrierefreier Android oder iOS Apps benötigen oder bestehende Anwendungen hinsichtlich BITV und Accessibility verbessern möchten, können Sie mich gerne kontaktieren.
