Many people are rightly focused on Apple’s questionable decision to make “Accessibility Events” auto-enabled with the release of iOS 12.2 (and macOS 10.14.4).
After disabling that feature, I immediately turned my attention to a long standing iOS bug with
role="switch", where it did not communicate state. Thanks to a tweet by Paul J. Adam, a bug had been filed in Webkit, and I’ve been waiting for it to be patched into Safari.
With iOS 12.2’s release I confirmed today that the bug fix landed and
role="switch" is communicated as a “checkbox” and its state of “checked” or “unchecked” are announced.
So, it’s not perfect yet. But at least with iOS 12.2+
role="switch" becomes a usable ARIA role.
To follow up on the fact that iOS VoiceOver doesn’t treat
role="switch" any differently than if you were to just use a standard checkbox, I’ve filed a new bug to request that
role="switch" be announced as a “switch” with “on” and “off” state announcements. This change would get iOS to follow the specification for the role, as well as match the way VoiceOver and macOS correctly announce switches.
I’ve updated my A11y Styled Form Controls: Switch checkbox to document this fix.