-
Notifications
You must be signed in to change notification settings - Fork 350
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Guidance for touch devices #8
Comments
From @patrickhlauke on May 25, 2015 13:43 For context (as the above is paraphrasing my recent ranting on twitter), this relates to further thinking around this bug/comment I filed https://lists.w3.org/Archives/Public/public-pfwg-comments/2015AprJun/0005.html / https://www.w3.org/Bugs/Public/show_bug.cgi?id=28694 |
From @stevefaulkner on May 25, 2015 13:56 Have set up a google spreadsheet to record compatibility issues with design patterns |
From @patrickhlauke on May 25, 2015 13:56 A simple, concrete example: take an implementation of a "faked" slider like http://hanshillen.github.io/jqtest/#goto_slider - to my knowledge, this implementation follows the advice provided in http://www.w3.org/WAI/PF/aria-practices/#slider which defines the expected keyboard behavior (use of left/right arrow, home/end, page up/down, tab to get in/out of the slider widget itself). Now, as with many other patterns, this: a) assumes that it's working fine for mouse users (so nothing special is defined/mentioned about how a mouse user would need to interacts with it) and b) defines behavior for keyboard users, which the author is expected to include by hooking into keydown/keypress events, check for those defined expected keystrokes, and trigger relevant JS in response. This simple slider is unusuable for users with touchscreen interfaces and AT. Simply taking the example of iOS/VoiceOver, a user is able to set focus to the slider "knob". VoiceOver announces (because of the In short, even with such a simple widget as a slider, following the current advice/design pattern (which tacitly assumes a false dychotomy of mouse/keyboard only) results in a construct that simply will not work for touch/AT users. |
From @patrickhlauke on May 25, 2015 14:1 Another example of a construct that follows ARIA design patterns and fails for touch/AT: http://hanshillen.github.io/jqtest/#goto_menubar which follows http://www.w3.org/WAI/PF/aria-practices/#menu - specifically, if a menu item has a submenu, the pattern currently expects
With iOS/VO, I can open the first level of each menu, set focus to any item, but if the item also has a submenu, i cannot trigger it (in Hans' implementation), as this will NOT send |
From @patrickhlauke on May 25, 2015 14:6 A third one, for good measure: http://hanshillen.github.io/jqtest/#goto_tree which implements the TreeView http://www.w3.org/WAI/PF/aria-practices/#TreeView With iOS/VO, I can set focus to individual visible nodes (and also hidden nodes, but this seems a shortcoming in Hans' implementation, rather than intention), but I cannot open/expand a tree branch, as I cannot fire
I can only fire a
|
From @patrickhlauke on May 25, 2015 19:38 Additionally, when I originally said that for touch/AT situation we can only currently rely on |
From @patrickhlauke on May 26, 2015 8:38 Quick additional note, from testing: iOS devices with a paired bluetooth keyboard do not fire key events (whether VO is enabled or not) unless focus is in a text input/textarea (so patterns reliant on key events will fail even for "keyboard" users on iOS); Android with a paired keyboard does act mostly like a traditional "desktop" device with keyboard - no keys are intercepted, fired as normal (in standard Browser or Chrome; some browsers, like Firefox/Android, do provide additional shortcut keys when running Talkback, and these are intercepted) |
From @mraccess77 on June 10, 2015 15:47 In my experience custom ARIA combo boxes are also problematic with mobile devices such as iOS and Android. Listboxes faired better in my testing. My presentation at CSUN indicated the same challenges with sliders, menus, and trees as discussed above. Spinboxes also were not supported. |
From @DavidMacDonald on June 15, 2015 14:53 I'm totally on board with this discussion and we'll be looking at it carefully with the Mobile Task Force |
From @hshepherd on January 25, 2016 21:2 It seems like interactions with role="slider" elements are still an issue in iOS Voiceover even when using the recommended aria attributes (aria-valuemin, aria-valuemax, aria-valuenow). Are there any plans to revisit this? |
From @patrickhlauke on January 25, 2016 21:6 interactions with ARIA menus that have submenus are still an issue in iOS/VO too. generally, over the last few months, i've actually started advising clients NOT to implement certain ARIA patterns as they fall apart on mobile. |
|
I just tried the slider examples on iOS/Safari/VO and they don't work. Are there any plans to revisit this? |
there is no way to fix/revisit this - ARIA "faked" sliders rely on keyboard and mouse event listeners, but once VO encounters a slider (faked with |
Understood, thank you for the explanation. I will leave a link to a related WebKit bug https://bugs.webkit.org/show_bug.cgi?id=174898 in case anyone else is curious. It sounds like the proposed Accessibility Object Model might be able to fix this. I'll have to look into that further. Are there any plans to provide a more explicit warning within APG that specific patterns/examples will not work on iOS? I think a common assumption for people referencing these patterns/examples is that they will work everywhere. Section 2.3 "Mobile and Touch Support" does exist, but it is easy to miss as a separate section. |
reminder: not just iOS - any situation where AT+touchscreen is used, in general. and yes, the aim of AOM events is to fill this gap. but we're a long way away from seeing them, even in initial stages of support. |
It is always a good idea when implementing ARIA drag and drop sliders to add Decrement and Increment buttons for touch device support, even if implemented as ARIA mapped solutions specifically for screen reader users, since the underlying mappings for iOS will never be able to determine JS drag and drop interactions and how these relate to native swipe interactions in the future. You can see an example of this here: |
Sliders may also have issues meeting SC 2.5.1 Point Gestures under WCAG 2.1 without buttons to increase or decrease the value -- there is an active discussion on this on the WCAG 2.1 github issues page. |
Link to the WCAG issue for those that are curious: w3c/wcag#522 |
I've found the only solution is to employ an actual range control, that's hidden, with a fake slider overlaid. This even works in IE11. |
had a stab at the "real range input with faked slider on top" approach https://codepen.io/patrickhlauke/pen/byWPMX (noting that in that case, the whole ARIA stuff on the slider is unnecessary, since it's not what users will interact with) is it worth adding an explict note to the slider pattern itself https://www.w3.org/TR/wai-aria-practices-1.1/#slider ? rather than just relying on the very high-level generic "mobile and touch support" bit https://www.w3.org/TR/wai-aria-practices-1.1/#mobile_and_touch_support ? /cc @scottaohara |
I do think that the examples should better call out gaps, or implications for mobile (re: #420). Per Patrick's comment,
Anecdotally speaking, i find that section 2 at large is ignored. Developers come here looking for the pattern they need, jump to the example(s) to compare against or replicate, and then get frustrated when issues (like some pattern's lack of mobile support) are pointed out. I know that future work will address these mobile issues in more detail, but in the meantime, as this particular issue thread is nearly 2 years old, it's likely worth adding an editorial stop gap to better call attention to sections 2.2 and 2.3. 2.2 already has a link at the top of the examples... giving that more prominence and mentioning mobile in the link text would even be an improvement, imo. |
+1 for adding a warning to the examples / patterns, I just did this:
More broadly, @patrickhlauke mentioned AOM will enable scripting to detect gestures and support ARIA patterns. However, in the meantime could the AT (like VO/TB) do a little reverse feature detection and plug the gap? For example, if the user lands on a slider thumb which has keyboard events but no AOM slider events, then trigger the keyboard events. Swipe up = arrow up etc. |
Would appreciate some help with the wording:
There are plans to add support tables to the examples. But I think this needs some attention before we reach that point. This issue has been open for four years… There’s an open pull request to add a warning similar to this to the slider example pages. Can we, together, compile a list of examples that don’t work on touch devices? Have issues
Need to look at
Not optimised but should work
No issues
|
lately coming back to this (and the list of patterns the @ZoeBijl has in the comment above, but that I can't actually tick) to say that basically, every time a pattern expects/relies on listening to a particular character/key (rather than just relying on a humble click event), it will have issues in touch+AT scenarios. in many cases, there will also be similar issues for mouse-only users (e.g. data grids, example 3: scrollable data grid ... unless there are additional controls to scroll, mouse/touch/touch+AT users won't be able to trigger the From some brief testing, a few observations of the current state of some of the patterns with touch+AT:
So, while some patterns kind of work, others are quite fundamentally borked. particularly for the really broken ones, can I suggest that in addition to having the note (like there is now on the slider pattern) in the main document, examples that are broken also have the same warning right there in the example page itself? |
x-ref #928 |
Can we update this issue or other connected ones since APG has a slider example which was tested with different mobile devices? I will also try to triage all the slider issues. |
@ZoeBijl "WARNING! Some users of touch-based assistive technologies may experience difficulty utilizing widgets that implement this slider pattern because the gestures their assistive technology provides for operating sliders may not yet generate the necessary output. To change the slider value, touch-based assistive technologies need to respond to user gestures for incrementing and decrementing the value by synthesizing key events. This is a new convention that may not be fully implemented by some assistive technologies. Authors should fully test slider widgets using assistive technologies on devices where touch is a primary input mechanism before considering incorporation into production systems." |
As mentioned above as part of the slider update, VoiceOver/iOS now fires fakes/synthetic keyboard events (as per the AOM User action events from Assistive Technology model) - see https://www.youtube.com/watch?v=x__Rf4foatU / https://codepen.io/patrickhlauke/pen/MMgBjZ Needs more testing, but likely that VO/iOS now addresses a few other cases that before - due to their reliance on keyboard event handling - were failing miserably in touch+AT scenarios (though personally, rather than having AT fire fake keyboard events, I'd have rather liked to see the opposite, with browsers/user agents firing input-agnostic events regardless of whether they came from a real keyboard or from an AT gesture...but that idea - first floated as IndieUI Events many moons ago - just doesn't seem to get any traction; so we're now left with a weird "AT have to pretend to fire keyboard events so that ARIA Practices patterns don't break", which is a bit dirty...) |
I just want a role="swipe"... i have other buttons for non-swipe interfaces.... but when i do an on:click for a swipe action... and then get nagged about setting a aria role... I don't know what to do. |
From @LJWatson on May 25, 2015 12:30
We need to address the problem of design pattern accessibility on touch screen devices. Touch ATs intercept all touch gestures. Only click/blur/focus are handled reliably - and they're not sufficient to support interaction with complex widgets like trees.
We should look to include guidance that surfaces these shortcomings, and indicate which of the design patterns will/won't work on touch devices with ATs enabled.
Copied from original issue: w3c/aria#60
The text was updated successfully, but these errors were encountered: