24.1 · VoiceOver, accessibility elements and the other ways people use an app
Accessibility is not a layer on top of the UI. It is a second interface to the same app, spoken or scanned instead of seen. The accessibility tree is that interface, and you design it.
Mental model. For every element ask: what is it called, what is its state, what can I do with it, and is it reached in a sensible order?
The accessibility tree
Elements, labels, values, hints and traits, and what VoiceOver says.
- How does VoiceOver read your UI: accessibility elements, labels, values, hints and traits, and how do you fix an icon-only button?
VoiceOver does not read pixels; it reads the accessibility tree: a list of accessibility elements, each with properties it speaks in a fixed order, the label…
Actions and changes
Custom actions, adjustable controls, rotors and announcing changes.
- How do custom actions, adjustable controls, rotors and announcements make complex UI usable with VoiceOver?
A visual interface hides actions in gestures: swipe a row to delete, long-press to reveal a menu, drag to reorder. A VoiceOver user cannot perform those…
Other assistive input
Voice Control, Switch Control, keyboards and how names and order matter.
- How do Voice Control, Switch Control and keyboard access use your UI, and what do accessibility input labels and focus order change?
VoiceOver is one of several ways to drive an app, and they all rely on the same accessibility tree. Voice Control lets a person say “tap Share” or “show…
More in Accessibility & localization
- 24.2 · Dynamic Type, display settings, contrast and touch targets
- 24.3 · Right-to-left layout, bidirectional text and number systems
- 24.4 · Testing localisation, and sorting, calendars and names by locale
- 24.5 · Auditing and testing accessibility, and making it a bar, not a backlog
- 24.6 · Building and testing accessible components
- 24.7 · Adaptive colour, font fallback and mirrored drawing
- 24.8 · Language matching, plural rules, string catalogs and Info.plist strings
- 24.9 · Unicode equivalence, word boundaries and regional defaults