VoiceOver ist ein integrierter Screenreader von Apple, der jedes Element der Benutzeroberfläche vorliest und die Steuerung des Geräts durch Gesten ermöglicht. Die Technologie ist auf Systemebene in iOS, iPadOS und macOS integriert und erfordert keine zusätzliche Softwareinstallation. Laut Apple Accessibility (2025) unterstützt VoiceOver über 40 Sprachen und wird von Millionen blinder und sehbehinderter Benutzer weltweit genutzt.
Das Wichtigste
VoiceOver ist ein in Apple-Betriebssysteme integrierter Screenreader. Er ist für blinde und sehbehinderte Benutzer konzipiert und ermöglicht eine vollständige Interaktion mit dem Gerät ohne visuellen Kontakt. VoiceOver liest alle Elemente der Benutzeroberfläche vor: Schaltflächen, Links, Text, Bilder, Benachrichtigungen und Systemelemente.
Die Technologie wurde erstmals 2005 für macOS vorgestellt und kam mit dem iPhone 3GS im Jahr 2009 auf iOS. Seitdem ist VoiceOver ein fester Bestandteil des Apple-Ökosystems und eines der Hauptargumente für die Barrierefreiheit der Plattform. VoiceOver ist auf Systemebene integriert — das bedeutet, es funktioniert in jeder Anwendung ohne zusätzliche Integration durch den Entwickler, obwohl die Vorlesequalität direkt davon abhängt, wie gut die Anwendung die iOS-Barrierefreiheits-API nutzt.
VoiceOver unterstützt über 40 Sprachen mit natürlicher Sprachsynthese und passt sich regionalen Stimmeinstellungen an. Auf iOS verwendet VoiceOver die Sprach-Engines von Siri für Deutsch und eine Reihe anderer Sprachen, was eine möglichst natürliche Aussprache und korrekte Intonation je nach Satzzeichen und Kontext gewährleistet.
VoiceOver fängt Berührungsereignisse ab und interpretiert sie anders als die Standard-iOS-Eingabe. Wenn ein Benutzer den Bildschirm berührt, aktiviert VoiceOver das Element unter dem Finger nicht, sondern liest es zunächst vor. Erst nach einem Doppeltipp wird das Element aktiviert. Dieser entscheidende Unterschied ermöglicht es blinden Benutzern, die Oberfläche ohne Risiko versehentlicher Klicks zu erkunden.
VoiceOver liest die Elemente der Benutzeroberfläche in logischer Reihenfolge: von links nach rechts, von oben nach unten. Die Lesereihenfolge wird von der iOS-Ansichtshierarchie übernommen, aber der Entwickler kann sie für komplexe Layouts über die Eigenschaft accessibilityElements ändern. Der Benutzer kann zwischen Elementen navigieren, indem er nach rechts (nächstes) und nach links (vorheriges) wischt oder ein bestimmtes Element berührt, um es vorzulesen.
Bei jeder Bewegung spricht VoiceOver den Elementtyp (Schaltfläche, Link, Überschrift), den Namen (accessibilityLabel), den Status (ausgewählt, deaktiviert) und den Hinweis (accessibilityHint) aus. Wenn das Element einen Wert enthält — zum Beispiel einen Lautstärkeregler — spricht VoiceOver auch diesen aus. Accessibility Traits (UIAccessibilityTraits) informieren den Benutzer zusätzlich über das Verhalten des Elements: ob es eine Schaltfläche, ein Schalter, ein Suchfeld oder eine Tastaturtaste ist.
Der Rotor ist ein virtuelles Einstellrad, das den Navigationsmodus von VoiceOver umschaltet. Der Benutzer dreht den Rotor mit zwei Fingern (wie einen Lautstärkeregler) und wählt einen Modus: Wörter, Zeichen, Überschriften, Links, Einstiegspunkte, Tabellenzeilen und andere. Der Überschriftenmodus ermöglicht das schnelle Wechseln zwischen H1-H6 auf Webseiten und in Apps, während der Zeichenmodus Text Buchstabe für Buchstabe vorliest, was beim Ausfüllen von Formularen oder der Eingabe von Bestätigungscodes nützlich ist.
Der Entwickler kann über die UIAccessibilityCustomRotor-API eigene Modi zum Rotor hinzufügen. Beispielsweise kann in einer Notizen-App ein Rotor „Lieblingsnotizen“ oder „Letzte Änderungen“ hinzugefügt werden. Benutzerdefinierte Rotoren beschleunigen die Navigation in bestimmten Apps erheblich und gelten als Best Practice für iOS-Barrierefreiheit.
VoiceOver verwendet einen eigenen Satz von Gesten, die nicht mit den Standard-iOS-Gesten übereinstimmen. Die meisten Gesten werden mit drei Fingern statt einem ausgeführt — dies verhindert Konflikte mit der normalen Bedienung und ermöglicht VoiceOver die gleichzeitige Arbeit mit der Standardeingabe.
| Aktion | Geste | Ergebnis |
|---|---|---|
| Element vorlesen | 1-Finger-Tippen | Spricht Elementnamen aus |
| Aktivieren | Doppeltippen | Drückt Schaltfläche oder Link |
| Nächstes Element | Nach rechts wischen | Zum nächsten wechseln |
| Vorheriges Element | Nach links wischen | Zum vorherigen zurück |
| Scrollen | Mit 3 Fingern wischen | Liste oder Seite scrollen |
| Rotor | Mit 2 Fingern drehen | Navigationsmodus ändern |
Die Doppeltipp-Geste ist die primäre Methode zum Aktivieren von Elementen in VoiceOver. Wenn ein Element eine spezielle Aktion erfordert (z. B. Ziehen), verwendet VoiceOver die Sequenz „Tippen — Doppeltippen und halten“, um in den Bewegungsmodus zu wechseln. Dies ermöglicht die Ausführung komplexer Gesten wie Drag-and-Drop ohne den Bildschirm zu sehen. VoiceOver unterstützt auch die Geste „Doppeltippen mit zwei Fingern“ zum Abbrechen einer Aktion und „Dreifachtippen“ zum Ein-/Ausschalten des Bildschirmvorhangs (Screen Curtain).
Ein iOS-App-Entwickler kann die Interaktion mit VoiceOver über die UIAccessibility-API erheblich verbessern. Grundlegende Barrierefreiheitseinstellungen werden im Interface Builder (Identity Inspector → Accessibility) vorgenommen, aber komplexe Oberflächen erfordern eine programmatische Konfiguration im Code.
Die Eigenschaft accessibilityLabel legt den Text fest, den VoiceOver für das Element ausspricht. Wenn kein Label festgelegt ist, verwendet VoiceOver den Schaltflächentext oder den Platzhalter des Textfelds. Für Elemente ohne Text (Symbole, benutzerdefinierte Ansichten) ist ein Label obligatorisch. Die Eigenschaft accessibilityTraits definiert den Elementtyp: Schaltfläche, Überschrift, Schalter, Suchfeld, Tastaturtaste, Wert ändert sich, Link und andere.
let profileButton = UIButton(type: .custom)
profileButton.setImage(UIImage(named: "avatar"), for: .normal)
profileButton.isAccessibilityElement = true
profileButton.accessibilityLabel = "Benutzerprofil"
profileButton.accessibilityTraits = .button
profileButton.accessibilityHint = "Öffnet den Profil-Einstellungsbildschirm"
Das Flag isAccessibilityElement aktiviert die VoiceOver-Unterstützung für benutzerdefinierte Ansichten — standardmäßig ist es nur für Standardelemente (UIButton, UILabel, UITextField) wahr. Der Parameter accessibilityHint fügt einen Hinweis hinzu: VoiceOver spricht ihn nach einer Pause aus, wenn der Benutzer auf einem Element verweilt. Der Hinweis sollte das Ergebnis der Aktion beschreiben, nicht die Anweisung: „Öffnet den Einstellungsbildschirm“ anstelle von „Drücken zum Öffnen“.
Für komplexe Bildschirme, bei denen die logische Gruppe von Elementen nicht mit der visuellen Reihenfolge übereinstimmt, wird accessibilityElements verwendet — ein Array, das die Lesereihenfolge festlegt. Beispielsweise enthält eine Produktkarte ein Bild, einen Namen, einen Preis und eine Schaltfl„che „In den Warenkorb“. Wenn diese Elemente chaotisch in der Ansichtshierarchie angeordnet sind, stellt accessibilityElements die korrekte Reihenfolge für VoiceOver her.
let productCard = UIView()
let productImage = UIImageView()
let productName = UILabel()
let productPrice = UILabel()
let addToCartButton = UIButton()
productCard.accessibilityElements = [
productImage, productName, productPrice, addToCartButton
]
Um mehrere Elemente zu einem einzigen zugänglichen Element zusammenzufassen, wird UIAccessibilityContainer oder accessibilityFrame zum Überschreiben des Berührungsbereichs verwendet. Dies ist nützlich, wenn eine Tabellenzelle mehrere UI-Komponenten enthält, aber logisch ein Element darstellt — VoiceOver sollte die gesamte Zelle als Ganzes vorlesen, nicht deren Inhalt einzeln durchgehen.
Die korrekte Konfiguration der Barrierefreiheit für VoiceOver erfordert Aufmerksamkeit für mehrere Aspekte: semantisches Markup, dynamische Updates, Behandlung benutzerdefinierter Elemente und Tests mit einem echten Screenreader.
In SwiftUI wird die Barrierefreiheit über die Modifikatoren .accessibilityLabel(), .accessibilityValue(), .accessibilityHint() und .accessibilityAddTraits() konfiguriert. SwiftUI erbt automatisch die Barrierefreiheit von Standardelementen, aber benutzerdefinierte Komponenten erfordern eine explizite Konfiguration. Beispielsweise muss ein benutzerdefinierter Schieberegler VoiceOver seinen Wert und das Änderungsformat mitteilen.
Slider(value: $volume, in: 0...100)
.accessibilityLabel("Lautstärke")
.accessibilityValue(
Text("\(Int(volume)) Prozent")
)
.accessibilityAddTraits(.adjustsAudioForAccessibility)
.accessibilityAdjustableAction { direction in
switch direction {
case .increment: volume = min(volume + 5, 100)
case .decrement: volume = max(volume - 5, 0)
}
}
Der Modifikator accessibilityAdjustableAction fügt die Möglichkeit hinzu, Werte mit VoiceOver-Gesten zu ändern: nach oben wischen zum Erhöhen, nach unten wischen zum Verringern. Ohne diesen Modifikator bleibt der Schieberegler für die Steuerung durch den Screenreader unzugänglich. Eine ähnliche Konfiguration ist für benutzerdefinierte Steppers, Picker und andere Elemente erforderlich, die ihren Wert ändern.
Wenn sich der Inhalt auf dem Bildschirm dynamisch ändert (eine Benachrichtigung erscheint, der Ladestatus aktualisiert wird, sich ein Preis ändert), muss VoiceOver eine Benachrichtigung über UIAccessibility.post erhalten. Ohne diesen Aufruf erfährt der Screenreader nichts von den Änderungen und der Benutzer verpasst wichtige Informationen. Für SwiftUI wird der Modifikator .accessibilityAnnouncement() verwendet.
UIAccessibility.post(
notification: .announcement,
argument: "Preis um 20 Prozent reduziert"
)
// SwiftUI
Text("Preis aktualisiert")
.accessibilityAnnouncement(Text("20% Rabatt"))
VoiceOver-Benachrichtigungen sollten sinnvoll eingesetzt werden: Übermäßige Ansagen ärgern den Benutzer, während ihr Fehlen die Anwendung unzugänglich macht. Die optimale Strategie besteht darin, nur die Änderungen anzukündigen, die den aktuellen Arbeitsablauf des Benutzers betreffen: Warenkorbaktualisierungen, Ladestatus, Formularvalidierungsfehler, Chat-Benachrichtigung. Hintergrundänderungen (Zeit auf dem Panel, Wechselkurse) erfordern keine Ansage — der Benutzer überprüft sie bei Bedarf selbst.
VoiceOver-Tests werden mit einem physischen Gerät mit aktiviertem Screenreader oder einem iOS-Simulator mit der Option Accessibility Inspector durchgeführt. Es ist wichtig, vollständige Nutzungsszenarien zu testen: Registrierung abschließen, Bestellung aufgeben, Produkt per Suche finden ohne visuelle Kontrolle. Wenn der Ablauf ohne visuelles Feedback navigierbar ist — ist VoiceOver korrekt konfiguriert.
Häufig gestellte Fragen
Einstellungen → Bedienungshilfen → VoiceOver. Schalten Sie den Schalter ein. Für die schnelle Aktivierung verwenden Sie den Dreifachklick der Seitentaste (beim iPhone X und neuer) oder der Home-Taste. Siri kann VoiceOver auch mit dem Befehl „VoiceOver einschalten“ aktivieren.
VoiceOver ist Apples Screenreader für iOS, TalkBack ist Googles Screenreader für Android. Das Funktionsprinzip ist gleich: Berühren spricht vor, Doppeltippen aktiviert. Der Unterschied liegt in den Gesten, den Rotoreinstellungen und den Ökosystemintegrationen: VoiceOver ist tiefer in iCloud und Apple Pay integriert.
Verwenden Sie die UIAccessibility-API: setzen Sie accessibilityLabel für alle Elemente, accessibilityTraits für den Elementtyp und accessibilityHint für Hinweise. In SwiftUI verwenden Sie die Modifikatoren .accessibilityLabel() und .accessibilityAddTraits(). Testen Sie die App mit aktiviertem VoiceOver.
Der Rotor ist ein Navigationsmodus, der durch Drehen mit zwei Fingern umgeschaltet wird. Er bestimmt, wie zwischen Elementen navigiert wird: nach Überschriften, Zeichen, Wörtern, Links oder Einstiegspunkten. Entwickler können über UIAccessibilityCustomRotor eigene Modi hinzufügen.
Für benutzerdefinierte UIView muss isAccessibilityElement = true gesetzt und accessibilityLabel bereitgestellt werden. Wenn das Element aus mehreren Unteransichten besteht, verwenden Sie accessibilityElements zum Festlegen der Lesereihenfolge oder fassen Sie sie in einem Container zusammen.
Zusammenfassung
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch