Skip to content

fix(ios): set accessibility container type on table view#652

Open
hggzm wants to merge 1 commit intomicrosoft:mainfrom
hggzm:clean/fix-table-a11y-48-ios
Open

fix(ios): set accessibility container type on table view#652
hggzm wants to merge 1 commit intomicrosoft:mainfrom
hggzm:clean/fix-table-a11y-48-ios

Conversation

@hggzm
Copy link
Copy Markdown
Collaborator

@hggzm hggzm commented Mar 18, 2026

Fork-based PR (no Azure Pipelines CI). When ready for CI, push branch to upstream as users/hggzm/clean/fix-table-a11y-48-ios and recreate.

History: upstream PRs #621 (closed)

Summary

VoiceOver had no semantic indication that table content was structured as a data table. The table view was just a plain container, so VoiceOver treated it the same as any other group of elements with no structural cues.

Changes

  • ACRTableView.mm: Set accessibilityContainerType to UIAccessibilityContainerTypeSemanticGroup (iOS 11+) on the table view after configuring accessibility elements. This tells VoiceOver to treat the table as a semantically related group, providing better navigation cues when entering and leaving the table content.

Testing

  1. Open a card with a Table element (e.g. ExpenseReport.json with a data table)
  2. Enable VoiceOver
  3. Navigate into and out of the table content
  4. Verify VoiceOver provides grouping cues for the table structure
  5. Verify table header cells (if firstRowAsHeaders is set) still announce as headings

VoiceOver had no indication that table content was structured as a
data table. Set accessibilityContainerType to SemanticGroup so
VoiceOver provides semantic grouping cues when navigating table rows,
improving the experience for users who need to understand the table
structure.

Fixes microsoft#48 (iOS)
@hggzm
Copy link
Copy Markdown
Collaborator Author

hggzm commented Mar 20, 2026

VoiceOver Accessibility Validation

Automated a11y pipeline validates this fix using real UIAccessibility API data.

Annotated A11y Overlay

Annotated screenshot

  • 87 total accessible elements captured from rendered cards via XCUIElement queries
  • accessibilityLabel, accessibilityValue, accessibilityFrame, accessibilityTraits verified
  • Green numbered overlay boxes show exact VoiceOver focus rectangles
  • Element data matches what VoiceOver reads at runtime

Full transcript | Gallery

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant