Assistive Technology Access
Interactive iOS elements must be accessible to VoiceOver and other assistive technologies, not just direct touch interaction.
WCAG Reference
Maps to: WCAG 4.1.2 Name, Role, Value | Applies to: WCAG 2.0, WCAG 2.1, WCAG 2.2 Introduced in: WCAG 2.0 | Level: A | Read the official specification →
What this rule checks
The scanner flags interactive elements that have isAccessibilityElement set to false or are hidden from the accessibility tree while still being visually present and functional.
Why it matters
When an interactive element is excluded from the accessibility tree, VoiceOver users cannot perceive or activate it. This effectively locks those users out of features that are available to sighted users.
Common failure patterns
- custom views with
isAccessibilityElement = falsethat contain interactive content UIViewsubclasses that implement touch handling but do not expose accessibility properties- elements hidden behind other views that are accessible via direct touch but not VoiceOver navigation
- container views that suppress child accessibility without evaluating each child
Remediation guidance
- set
isAccessibilityElement = trueon all meaningful interactive elements - for custom container views, either make children individually accessible or provide a container-level label that summarizes the content
- implement
UIAccessibilityprotocols on custom views (label, traits, value, hint) - test with VoiceOver to confirm every interactive element is reachable by swiping
