ignored-by-assistive-technology
Mobile validation
Make sure every interactive element can receive VoiceOver focus. When an element is hidden from assistive technologies, for example with isAccessibilityElement = false in UIKit or .accessibilityHidden(true) in SwiftUI, VoiceOver, Switch Control, and Voice Control cannot reach it, and their users cannot use it at all.
Make the control itself the accessibility element, not only its container. Native controls such as UIButton and SwiftUI's Button are exposed by default, so don't override that unless the element is purely decorative.
Note: This validation applies to iOS only, so there are no Android or cross-platform examples.
Pass Patterns
iOS
The button keeps its default accessibility settings, so VoiceOver can focus it.
let saveButton = UIButton(type: .system)
saveButton.setTitle("Save", for: .normal)The button is not hidden from accessibility, so VoiceOver can focus it.
Button("Save") {
save()
}Fail Patterns
iOS
isAccessibilityElement = false hides the button from VoiceOver, so it cannot be reached.
let saveButton = UIButton(type: .system)
saveButton.setTitle("Save", for: .normal)
saveButton.isAccessibilityElement = false.accessibilityHidden(true) hides the button from VoiceOver, so it cannot be reached.
Button("Save") {
save()
}
.accessibilityHidden(true)Try It Yourself
Using a screen reader
New to screen reader testing, or need a refresher?
Review this article first: Practical guides for using screen readers
- Turn on VoiceOver.
- Swipe right and left to move through every element on the screen.
- Check whether VoiceOver reaches each interactive element.
Expected results: VoiceOver highlights every interactive element, announces it with the correct role, such as “button” or “switch”, and can activate it like other controls.
Actual results: VoiceOver skips the element, so it cannot be reached or activated.
Using developer tools
- In Xcode, open Xcode > Open Developer Tool > Accessibility Inspector, select the simulator or device, and point at the element.
Expected results: Accessibility Inspector selects the element and shows its label and traits.
Actual results: Accessibility Inspector does not select the element, and selects its container or another element instead.
FAQ
How does this issue relate to 1.3.1 Info and Relationships
WCAG 1.3.1 requires that information, structure, and relationships are exposed programmatically. If an interactive element is hidden from assistive technology, its role and state are not available, so the relationship “this is a control you can activate” is lost
When a control is not exposed, people using assistive technology cannot discover or operate it. The UI’s intended relationships, like a control paired with its accessible name, also fail to be conveyed
To support 1.3.1 for this issue:
- Expose the control itself as the accessibility element
- Do not hide interactive elements with
isAccessibilityElement = falseor.accessibilityHidden(true) - Prefer native controls so roles and states are provided by default
How does this issue relate to 2.4.3 Focus Order?
WCAG 2.4.3 requires that focus moves in a sequence that preserves meaning and operability. When an element is ignored by assistive technology, it is removed from the tab sequence. VoiceOver cannot focus it, so users cannot reach or activate it. The result is a broken order where focus skips important controls or lands on containers that do not operate the UI.
This relates to 2.4.3 when:
- an interactive child is not exposed while its container takes focus
- a control with custom actions is not exposed with
isAccessibleset to true - the traversal order skips, repeats, or traps focus compared to the visual order
To align with 2.4.3, ensure each interactive element is exposed to assistive technology, can receive VoiceOver focus, and appears in an order that matches the visual flow. Mark the actual control as the accessible element, not only its container, and expose any custom actions through isAccessible so users can operate the control in sequence.
Why is this issue marked as Critical?
An element hidden from assistive technologies is effectively invisible to VoiceOver, Switch Control, and Voice Control users. They cannot reach or activate it, so the feature it controls fails for them, and it is rated critical.
Standards and Regulations
| Standard | Success Criterion | Reference |
|---|---|---|
| WCAG 2.2 | 1.3.1 Info and Relationships (A) | Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text. |
| WCAG 2.2 | 2.4.3 Focus Order (A) | If a web page can be navigated sequentially and the navigation sequences affect meaning or operation, focusable components receive focus in an order that preserves meaning and operability. |
| EN 301 549 | 11.1.3.1 Info and Relationships | Same as the WCAG text. |
| EN 301 549 | 11.2.4.3 Focus Order | Same as the WCAG text. |