Skip to content

fix(ios): prevent VoiceOver from announcing 'double tap to activate' on headings#650

Open
hggzm wants to merge 1 commit intomicrosoft:mainfrom
hggzm:clean/fix-heading-activatable-170
Open

fix(ios): prevent VoiceOver from announcing 'double tap to activate' on headings#650
hggzm wants to merge 1 commit intomicrosoft:mainfrom
hggzm:clean/fix-heading-activatable-170

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-heading-activatable-170 and recreate.

History: upstream PRs #619 (closed)

Summary

VoiceOver was announcing "double tap to activate" on TextBlock headings and other static text elements that had no associated action. This happened because all TextBlocks were rendered with userInteractionEnabled = YES and selectable = YES, even when they contained no HTML links or selectAction.

Changes

  • ACRTextBlockRenderer.mm: Removed the unconditional selectable = YES and userInteractionEnabled = YES that were set outside the HTML rendering block. For non-HTML text blocks (plain text without links), the view is now explicitly set as non-interactive (selectable = NO, userInteractionEnabled = NO), preventing the misleading "double tap to activate" hint. HTML text blocks with links still retain interactivity.

Before

VoiceOver announces: "Adaptive Cards Product Video, heading, double tap to activate"

After

VoiceOver announces: "Adaptive Cards Product Video, heading"

Testing

  1. Open a card with heading-style TextBlocks (e.g. ProductVideo.json)
  2. Enable VoiceOver
  3. Navigate to the heading — verify it does NOT announce "double tap to activate"
  4. Navigate to a TextBlock with links — verify links are still tappable
  5. Verify citations behavior is not affected

…on headings

TextBlock elements were always rendered with userInteractionEnabled=YES
and selectable=YES, even when they contained no links or selectAction.
This caused VoiceOver to announce 'double tap to activate' on headings
and other static text blocks where no action would be performed.

Now only enables user interaction when the text block contains HTML
content (which may have links). Plain text blocks are marked as
non-interactive, preventing the misleading hint.

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