• Success Criterion 2.1.1
  • Conformance level A

Control That Ignores Screen Reader Double-Tap Activation

2.1.1 — Keyboard

Scenario

Setting

An insurance company's claims form

What’s wrong

A control responds to touch or mouse but does not activate through screen reader gestures (double-tap with TalkBack/VoiceOver does nothing) — screen reader users can reach it but never use it.

Example

uploadBtn.addEventListener('touchstart', (e) => {
  e.preventDefault(); // blocks the synthetic click TalkBack/VoiceOver send after double-tap
  openCamera();
});

Why it matters

A claimant using TalkBack can navigate to the upload button and double-tap it, but nothing happens because the handler swallowed the event the screen reader relies on.

How to test

With a screen reader active, use its 'activate' gesture (double-tap on touch, or Enter/Space on desktop) on the control: if the click event never fires, it fails.

How to fix

Listen for click, not raw touchstart, whenever a control should also respond to VoiceOver or TalkBack's double-tap gesture.

uploadBtn.addEventListener('click', () => {
  openCamera();
});
// remove the touchstart preventDefault; use pointer events with passive:true if drag gestures are also needed

Outcome

A claimant double-taps the upload button with TalkBack and the camera launches instantly.

Who is affected

Screen reader users on mobile can reach the control, but their standard double-tap activation gesture never fires it.

Learn more