Test Accessibility on Your Device with VoiceOver

It’s a good idea to test your app using VoiceOver, because you can experience the app in the same way that VoiceOver users will experience it. Using VoiceOver to run your app can expose problem areas—for example, confusing labels, unhelpful hints, and unreachable elements—that make your app less accessible.

VoiceOver is a sophisticated technology that provides many powerful features to users with disabilities. Although you don’t need to become an expert VoiceOver user to test your app with it, you do need to know a handful of basic gestures. This chapter describes how to activate VoiceOver and use it to run your app.

First Steps

Go to Settings > General > Accessibility > VoiceOver and tap the switch control to turn VoiceOver on, as shown in Figure 1-1. If you provide hints for any accessible elements in your app, check to make sure the Speak Hints switch is on (it is on by default). Before leaving VoiceOver settings, make sure the Speaking Rate slider is adjusted to an appropriate value.

Figure 1-1  Enable VoiceOver in Settings

After you’ve turned VoiceOver on, you’ll notice that many familiar gestures have different effects. For example, a single tap causes VoiceOver to speak the selected item and a double tap activates the selected item. When an element is selected, VoiceOver draws a black rounded rectangle around it, which is called the VoiceOver cursor. VoiceOver users are confident navigating the interface because the VoiceOver cursor prevents them from triggering something unintentionally.

A complete list of VoiceOver gestures are detailed in Table 1-1.

Table 1-1  VoiceOver gestures are different from standard gestures

VoiceOver gesture


Drag over the screen

Select and speak each item as you touch it.

One-finger tap

Speak the selected item.

One-finger swipe right or left

Select the next or previous item. The order of elements is determined by their screen coordinates in a left-to-right, top-to-bottom fashion. To override this order, group accessible elements together with the shouldGroupAccessibilityChildren property.

One-finger swipe up or down

This gesture performs different actions depending on the context:

  • On an adjustable element, such as a slider, increment or decrement the value. Adjustable elements implement the UIAccessibilityTraitAdjustable trait.

  • In a text view, move the insertion point backwards or forwards.

One-finger double tap

This gesture performs one of the following:

  • Activate the selected item.

  • Toggle the selected switch.

  • Unlock the lock screen when the Unlock switch is selected.

Split-tap—Touch and hold an element, then tap anywhere on the screen with another finger.

Combine the selection and activation gesture into one. Once familiar, this gesture is quick to input, especially when typing.

One-finger double press—With one finger, perform a double tap. During the second tap, continue to hold your finger against the screen.

Drag an item.

Two-finger tap

Pause reading. Two-finger tap again to resume reading.

Two-finger double tap—Also called a Magic Tap.

Start and stop the current action. For example, a Magic Tap starts or pauses the stopwatch in the Clock app, and answers or hangs up a call in the Phone app. Not all views implement the Magic Tap; you must opt in to achieve this functionality. See “Responding to Special VoiceOver Gestures” in View Controller Programming Guide for iOS for more information.

Two-finger scrub—A Z-shaped gesture, also called an Escape.

Go back hierarchically. For example, an Escape traverses up, or pops, the navigation stack in a navigation controller. Not all views implement the Escape; you must opt in to achieve this functionality. See “Responding to Special VoiceOver Gestures” in View Controller Programming Guide for iOS for more information.

Two-finger swipe up

Read all accessible items from the top of the screen.

Two-finger swipe down

Read all accessible items from the current position.

Two-finger pinch open

Select text.

Two-finger pinch close

Deselect text.

Three-finger swipe up or down

Scroll a list or area of the screen.

Three-finger swipe right or left

Navigate to the next or previous page.

Three-finger double tap—If zoom is enabled, this becomes a three-finger triple tap.

Toggle speech. VoiceOver sound icons, or audio feedback, still play if the device is not muted.

Three-finger triple tap—If zoom is enabled, this becomes a three-finger quadruple tap.

Toggle Screen Curtain. See “Emulate the VoiceOver Experience with the Screen Curtain.”

Four-finger tap at top or bottom of screen

Select the first or last accessible element on the screen.

While testing your app, ensure that interactive controls and important pieces of information can be accessed by the VoiceOver cursor. UI decoration is irrelevant to the VoiceOver user, and need not be accessible.

VoiceOver Tips and Tricks

This section contains special VoiceOver shortcuts and gestures that can help you operate and master VoiceOver. With these tips, you can quickly change VoiceOver settings, jump to a certain element when many are presented onscreen, and use iOS from the perception of someone with a visual impairment.

Quickly Toggle VoiceOver by Triple-Clicking the Home Button

You can toggle VoiceOver on and off quickly by setting it to the triple-click setting in Settings > General > Accessibility > Triple-Click, as shown in Figure 1-2. Then, by triple-clicking the Home button, you can toggle VoiceOver on or off. This is much quicker than navigating back to the Settings app every time you want to enable or disable VoiceOver, speeding up accessibility testing significantly while making it easy to disable VoiceOver when you’re not sure which gesture to use.

Figure 1-2  Set the triple-click Home button setting to VoiceOver

Fine-Tune Speech Granularity with the VoiceOver Rotor

You can break down the speech of VoiceOver to a per-word and even per-character basis by using the VoiceOver rotor, as shown in Figure 1-3. Rotate two fingers in a clockwise or counter-clockwise motion, as if turning a dial, to cycle through rotor options. After an option is selected, swipe up or down with one finger to progress to the previous or next value as indicated by the rotor option.

Figure 1-3  Use the VoiceOver rotor to speak text word by word

You can also add options to the rotor in Settings > General > Accessibility > VoiceOver > Rotor. For example, you can add the Speech Rate option to dynamically adjust the speaking rate from anywhere in iOS by swiping up or down. Rotor options are contextually sensitive and may not appear in all environments.

Scroll Faster with the Item Chooser

The Item Chooser can help you quickly select the element you’re looking for, particularly when there are a great number of elements in a view. With two fingers, triple-tap the screen to bring up the Item Chooser, as shown in Figure 1-4. Then, select the indexed list on the right and flick up or down to progress to the previous or next letter, respectively. This approach is useful for jumping to a particular point in a table view that doesn’t have an indexed list. The Item Chooser is also useful for searching items onscreen when there is no search field present, and for sorting an unordered list alphabetically. Dismiss the Item Chooser by performing the Escape command—a two-finger Z-shaped gesture.

Figure 1-4  The Item Chooser

Emulate the VoiceOver Experience with the Screen Curtain

To simulate the experience a visually impaired user might have with your app, you can run it with the VoiceOver screen curtain in place. When you activate the screen curtain, VoiceOver turns off the device display so that no one can read. Testing with the display turned off obliges you to rely on the information VoiceOver speaks and removes the temptation to use your app as a sighted user would. To turn off the display while you use VoiceOver, triple-tap the screen with three fingers. To turn the display back on, perform the same gesture again.