Accessible Drag and Drop Analysis, Classifications and Examples

Last Modified: November 1, 2019

Introduction

The notes collected in this document complement other documents developed by the DIAGRAM Developers’ Drag and Drop Sub-Committee. Herein, we discuss the accessibility of drag and drop interactions in general terms, distinguish different types of drag and drop interactions which are germane to accessibility, and examine their implications. Educational applications are the focus of this effort, but, due to the nature of the subject-matter, the findings of the analysis are more generally applicable.

Classifying Drag and Drop Interactions

Drag and drop interaction is an instance of direct manipulation: the user moves an on-screen object from a source (starting position) to a destination (final position). This operation can be performed by the user directly if a pointing device or touch input can be controlled with sufficient precision to allow both the source (hence the object to be operated upon) and the destination to be specified. The source, destination and object are typically displayed visually, but auditory or tactile output can also be provided, thus making the interaction non-visually accessible.

Simple

Intermediate

Complex

Examples of Accessible Approaches to Drag and Drop

Enhancing Visual Drag and Drop Interactions

Users who encounter difficulty with fine motor control or who have a vision impairment that makes small objects difficult to distinguish without enlargement can be expected to benefit from constraints on the minimum visual size of sources and destinations. For further details, see the "target size" proposal which is under consideration for inclusion in Web Content Accessibility Guidelines (WCAG) 2.1.

Keyboard Access

The drag and drop operation can be performed via a keyboard. To achieve this, a key (e.g., space bar or enter) is assigned to the operations of selecting a source and selecting a destination, respectively. Additional keys (typically arrow keys, possibly supplemented by application-specific shortcuts) alter the position of the object. If multiple objects can be selected in a single drag and drop operation, additional keyboard commands are required. In this scenario, there are two subcases that typically need to be supported.

In the first case, the objects occur contiguously; in a typical implementation, they may be selected by holding down a modifier key (conventionally the shift key) while using cursor movement keys to bring focus to each of the objects to be selected. In the second case, the objects do not occur contiguously, and therefore each is selected via an explicit keyboard action (e.g., by the space bar while holding down the control key to sustain the selection operation). These examples of keyboard behavior are illustrative only. Alternative designs are possible.

In some applications of drag and drop, the keyboard user need only specify the source and the destination, whereas in other applications the path to the destination, including objects traversed along the route are significant. See the examples enumerated in the accompanying spreadsheet.

If the path from source to destination is significant, then it is necessary to complicate the keyboard interface. The best design to adopt depends on the nature of the interaction, including the actions that can be performed along the route.

In some applications, the velocity of the user’s action (i.e., the timing of the direct manipulation) contributes to the effect. Examples can be found in educational simulations. Although the intervals between keystrokes can be timed, doing so violates the restriction established by Web Content Accessibility Guidelines 2.0, success criterion 2.1.1, on relying upon keyboard timing data in user interfaces. This restriction is intended to support assistive technologies that operate by simulating keystrokes. Thus, an alternative solution for keyboard users is needed to applications that depend on the speed of the user’s drag and drop action, such as a control (e.g., slider) that varies the speed of the action.

Two distinct cases should be noted. In the first case, the input events themselves (e.g., the succession of touch or pointer events with changing coordinates, or the duration of a key’s being held) are timed. In the second case, the entire drag and drop operation - specifically, the time elapsed after completion of the object selection operation but before the destination selection operation - is timed. This does not involve timing of individual keystrokes, and thus does not appear to contradict the letter of WCAG 2.0.

Keyboard access becomes tedious for the user if the number of potential sources and destinations is large (e.g., moving an object on a plane in an educational game or simulation). This problem is amplified if a screen reader is to be used, as it is not possible to gain a quick overview of the available sources or destinations, and navigating among them can be a slow process with output in speech or braille. If the number of drag and drop operations required to complete a task is large, carrying them out with a keyboard interface likewise becomes significantly time consuming. If a screen reader is used, the time taken to complete the task is further increased by the need to review the available objects to be dragged and dropped, including the effects of previous such operations.

Consequences of the Drag and Drop Operation

The effects of a drag and drop operation must be made perspicuous to the user. To achieve this, it is necessary not only that effects be plainly visible in the user interface, but that they also be conveyed to assistive technologies via applicable accessibility APIs.

A noteworthy special case occurs where the application moves the object being dropped from the destination chosen by the user to another destination. For example, in a chemistry simulation, a dropped electron may be immediately moved from the location chosen by the user to an outer electron shell in accordance with the physical laws that the simulation depicts. As a second example, an object which is dropped into a grid may be moved to the destination which is geometrically closest to the point on the screen at which the drop action takes place, thus correcting for inaccuracies on the part of the user. Such correction is likely to benefit users who, though capable of operating a touch screen or pointing device, encounter difficulty in positioning objects precisely.

In general, if an object moves upon being dropped, the final destination must be made clear to the user, for example through a visual animation that shows the movement, and via an appropriate notification delivered to accessibility APIs (e.g., a message describing the effects of the drop).

Speech Input

To support speech input, the user needs to be able conveniently to refer to the object which is to be manipulated, and to specify the destination. Where the presentation of the user interface makes this difficult to achieve, an alternative means of requesting the desired operation must be provided. For example, selecting from among a large number of objects located in a plane is difficult to do via speech input unless the coordinates or other means of reference are readily obtainable.

Support for Screen Readers

This support has largely been addressed in the preceding sections. Suitable widget roles, accessible descriptions, etc., need to be associated with all of the components of the user interface, and changes in state resulting from the user’s actions must be properly reported to the screen reader via the platform accessibility API. The accessible name of each source or destination must be sufficient to make it easily identifiable for the purpose of selection.

When to Use the Drag and Drop Metaphor

Application designers should carefully consider whether or not to use a drag and drop metaphor, and implement an alternative where appropriate. It may also be reasonable, in some circumstances, to provide a user-configurable option that changes the type of interaction offered. Guidance needs to be developed for deciding whether a drag and drop interaction is appropriate, given the nature of the task to be performed and the diverse needs of users. This sub-committee is yet to develop such guidance.

Drag and Drop Accessibility Matrix

Complexity Name Platform Type Task Input Modality Solution Related URLs / Examples Notes
Simple Blocks4All iPad Block based Programming Enviornment Editing a block-based program that controls a robot Touch, Switch Using VoiceOver, one-finger explore to find a block; double-tap to select the block; one-finger explore to find location to place the block in the block program (could be the garbage can); double-tap to place block at selected location. Blocks for All This is an experimental project led by Lauren Milne at Macalester College. There is a paper describing the research. See: Lauren R. Milne and Richard E. Ladner. 2018. Blocks4All: Overcoming Accessibility Barriers to Blocks Programming for Children with Visual Impairments. In Proceedings of the 2018 CHI Conference on Human Factors in Computing Systems (CHI '18). ACM, New York, NY, USA, Paper 69, 10 pages. DOI: . Also see video of Block4All.
Simple iOS Legacy VO Drag and Drop iOS OS manipulation of objects (applications, or content) Drag an icon (app or folder) to an empty location or ontop of another icon on the same screen touch & Keyboard Double tap and hold the item you are trying to move then slide you're finger to the spot you want to drop the item, then lift finger off screen.
Simple iOS Picker iOS Slider actuating a slider or picker object. touch & Keyboard Focus the picker control, and swipe up/down to adjust values anything from switching screens from ios, to adjusting the date in a calendar, swiping between photos in a caracell object.
Simple Windows File Explorer Windows OS manipulation of objects (applications, or content) Dragging and dropping a single item Keyboard arrow keys to select the source, use Ctrl+C or X to copy/cut respectively and use keyboard to navigate to destination, and use Ctrl+V to paste
Simple WeScheme Web Block based Programming Enviornment Copy/Cut and Paste Keyboard / (Voice - Still to be tested) Use arrow keys to navigate to desired source. Multi-select is achieved through holding down Ctrl & arrowkeys and use space bar to add to active set. (Similar to File managers / Windows Explorer). Note: Can not do Shift, so you can't do contigeous selection. Arrow to destination, then you can do a paste or paste before. Must pick a direction for paste. Ctrl + Shift + V is paste before vs. standard Ctrl + V to paste after WeScheme Editor Tree View which is accessible of the Blocks. (Switch to Blocks mode to see the accessible Drag and Drop interactions)
Simple Web Slider Web Slider adjust a slider Keyboard Arrow keys increment/decrement, home and end keys snap to beginning/end, page up/page down step a large amount than up or down arrow moves you. Touch gestures allow for manipulation of single values only at this time. ARIA Best Practices So page up/down are larger incremental values which can change depending on the situation.
Simple Rotation Web Slider? Rotation of an object about a point Keyboard/Mouse/Touch Metaphor for radial rotation is a linear slider, accessible drag and drop can accomplished similarly. Arrow keys move object along values. Each movement and critical ranges are described with Accessibility APIs. Prototype Version
Simple Categorization CSUN Web Categorization Using keyboard to select a single item from one list and drop it into a specific category target area Keyboard Proof of concept and sample code provided for simple web based categorization DIAGRAM Categorization Example
Simple Match CSUN Web Matching Using keyboard to select a single item from one list then select its match in a second list and making the connection between the two is pressing a button to confirm the match. Keyboard Proof of concept and sample code provided for simple web based categorization DIAGRAM Matching Example
Simple Sorting CSUN Web Sorting Using a keyboard to select and move in a list one item to another position in the list Keyboard Proof of concept and sample code provided for simple web based sorting a list DIAGRAM Sortable Example
Simple Ordering CSUN Web Sorting Using a keyboard to order items in a list Keyboard Proof of concept and sample code provided for simple web based ordering a list DIAGRAM Ordering Example Interesting sorting example (described as "list reordering") The fluidproject list reordering has some accessibility issues and has limited keyboard accessiblity which needs improvement.
Intermediate iOS 11 Voice Over Drag and Drop iOS OS manipulation of objects (applications, or content) copy/cut/paste/drag and drop and create folders touch & Keyboard Must be in edit mode, use the actions rotar to select drag. Navigate on your device to a destination, then you have some options to either add the currently focused item to your drag session, or paste everything in your drag session before or after the currently focused item or combine to create a new folder with all items in the drag session and currently focused item.
Intermediate iOS Legacy VO Drag and Drop iOS OS manipulation of objects (applications, or content) Drag an icon (app or folder) to an empty location or ontop of another icon on a different screen touch & Keyboard Double tap and hold the item you are trying to move then slide you're finger to the right or left edge of the screen for next/previous screen respetively. Hold your finger there until screen change is announced, keep holding to subsequent screen or drop item to desired location.
Intermediate Windows File Explorer Windows OS manipulation of objects (applications, or content) Dragging and dropping multiple items Keyboard Use Ctrl + arrow keys to move focus without cancelling selection, use Ctrl + space to select an item, or Ctrl + shift+ arrow keys to select a multiple items while preserving the other selected non-contigeous items. use Ctrl+C or X to copy/cut respectively and use keyboard to navigate to destination, and use Ctrl+V to paste
Intermediate Dragging in 1 Dimension Web Application Select a range between two draggable objects Keyboard/Mouse/Touch/Other Metaphor for 1 dimensional dragging is a slider. Interaction pattern can map to that. Arrow keys move objects in one dimension. Home/End/PgUp/PgDn move objects more quickly. Accessibility API used to convey application state changes during the operation. PhET Simulation (Gravity Force Lab: Basics)
Intermediate Large Number of Drop Targets Web Application Drag objects into an nxn grid to organize, where n is > 10. Objects may move to another location upon release. Keyboard/Mouse/Touch Area Builder This example currently has no support for accessibility.
Intermediate Sorting Web Sorting Sorting task where dragged object can move away from target destination. Keyboard/Mouse/Touch Items can be selected from source and moved to destination. Accessibility API should be used to describe the final destination of the item after release. PhET Simulation (Build an atom) This example is currently not accessible.
Difficult iOS Legacy VO Drag and Drop iOS OS creation of folders DoubleTap and hold to drag an icon (app or folder) on to either another app icon or a folder icon and hold it overtop of the destination until either a folder is created or the folder is opened and then release. touch & Keyboard Double tap and hold the item you are trying to move then slide you're finger to the spot you want to drop the item, then lift finger off screen.
Difficult Windows File Explorer Windows OS manipulation of objects (applications, or content) Dragging and dropping multiple non-contiguous items Keyboard Use the keyboard to arrow to the first or last item then Hold Down Shift plus arrow keys to select range multiple contigeous source items use Ctrl+C or X to copy/cut respectively and use keyboard to navigate to destination, and use Ctrl+V to paste use of arrow keys without any modifiers (ie. Ctrl / Shift) will clear selection on all but the currently active item.
Difficult Drag and Drop in a 2D plane Web Application Drag object freely in a 2D plane where the drag operation can can change the object state and other objects in the application. Destination of object and other application state can change upon release of object. Keyboard/Mouse/Touch WASD and arrow keys move object in 2D plane. Shift modifier key changes drag speed. Various hot key combinations move object to important locations in plane. Accessibility API used to describe state changes during and after interaction. PhET Simulation (Balloons and Static Electricity) JAWS makes use of arrow keys imposssible for continuous object movement, even with ARIA role=application
Difficult Speed dependent dragging Web Application Drag object freely in a 2D area where speed of drag impacts state of the object and surrounding application. Keyboard/Mouse/Touch WASD and arrow keys move object in a 2D plane. Hold down shift to change movement speed. As object moves through critical locations, Accessibility API is used to announce state changes.

PhET Simulation (Friction)

Difficult Opera D&D Example Web Opera Drag and Drop Example
Difficult Phet multiple drop locations and drop location can move as it snaps to a nearby location. Web
  • Large number of drop targets
  • This example is not accessible and needs further discussions on possible accessible implementations.