Skip to content

fix(ios): provide fallback accessibility label for images with selectAction#654

Open
hggzm wants to merge 1 commit intomicrosoft:mainfrom
hggzm:clean/fix-image-selectaction-a11y-171
Open

fix(ios): provide fallback accessibility label for images with selectAction#654
hggzm wants to merge 1 commit intomicrosoft:mainfrom
hggzm:clean/fix-image-selectaction-a11y-171

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-image-selectaction-a11y-171 and recreate.

History: upstream PRs #623 (closed)

Summary

Images with a selectAction (making them interactive/tappable) but no alt text were not discoverable by VoiceOver. While the image view had isAccessibilityElement = YES and received the button trait from setAccessibilityTrait, it had no accessibility label, so VoiceOver would announce just "button" with no context about what the element does.

Changes

  • ACRImageRenderer.mm: Added a fallback after the existing label-setting code. When an image has a selectAction but neither alt text nor a tooltip, the renderer now uses the action's title as the accessibility label. If the action also has no title, it falls back to "Image" as a generic label.

Before

VoiceOver announces: "button" (or skips the element entirely)

After

VoiceOver announces: "[action title], button" or "Image, button"

Testing

  1. Open a card with clickable images that have no alt text (e.g. InfoClickable.json with the smiley icon)
  2. Enable VoiceOver
  3. Swipe to navigate to the image
  4. Verify VoiceOver announces the element with a meaningful label
  5. Verify images WITH alt text still use the alt text as the label (no regression)

…Action

When an image has a selectAction (making it interactive) but no alt text
and no tooltip, VoiceOver could not meaningfully announce the element.
The image was focusable (isAccessibilityElement = YES) and had the button
trait (from setAccessibilityTrait), but without a label VoiceOver would
skip it or just announce 'button' with no context.

Now falls back to the action's title, or 'Image' as a last resort,
ensuring interactive images are always discoverable and identifiable
by VoiceOver users.

Fixes microsoft#171
@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