Supporting VoiceOver typing preferences

Typing on iOS applications that are not implemented with accessibility in mind can literally be a pain for VoiceOver users.

Meet Sarah. Sarah is fictional. Still, she's closely based on someone I met who was participating in a usability study.

Sarah is in her late thirties. She is visually impaired with limited sight and suffers from Rheumatoid Arthritis.

Sarah is a screen reader user. She loves VoiceOver on her iPhone and iPad, enabling her to do banking, message friends, or do online shopping.

I'm not a great novelist, so I won't give you a complete account of Sarah's back story here. Still, if custom keypads are not implemented with accessibility in mind, they are a pain for Sarah.

Let me explain.

Data entry can be painful when her VoiceOver typing preference is not supported.

Sarah's Arthritis can make it painful to use her fingers over a long time.

Her arthritis causes her hands and fingers to become stiff and painful, which can worsen during the day as she uses her fingers more.

Some typing features in apps can be a pain for Sarah, depending on how they have been implemented.

Examples of data entry she's found problematic include:

  • custom numeric keypads like calculators or phone pads
  • apps that use custom keyboards
  • apps that use custom pin code views

To help alleviate the finger pain associated with typing, Sarah needs to customise VoiceOver to allow her to use a VoiceOver typing preference called direct typing mode.

Opting to use direct typing mode means much less effort is needed to type as it doesn't require a double-tap with each entry.

VoiceOver typing modes

There are three typing modes in VoiceOver. These modes allow VoiceOver users choice in how they can type text.

  • Standard typing
  • Touch typing
  • Direct typing

VoiceOver typing mode options - standard typing, touch typing and direct touch typing
VoiceOver typing mode options in iOS.

VoiceOvers typing styles are located in the accessibility settings on your device. You can edit them by going to;

  1. Accessibility
  2. VoiceOver
  3. Typing Style.

Standard typing mode

This is the default typing setting in VoiceOver.

Typing in this mode is achieved by either double-tapping a key to type it or holding the key you wish to type and tapping elsewhere in the UI with another finger.

Touch typing mode

Touch typing needs to be activated in the VoiceOver user settings.

This typing mode allows a user to hold the key they wish to type, and upon release of that key, it is typed. Users drag their finger around the keyboard and remove it when they key they want is announced.

Direct typing mode

Direct touch typing needs to be activated in the VoiceOver user settings.

This typing mode allows a VoiceOver user to interact with a keypad just like a regular touch keypad. It will enable a user to tap a key once to type it and can be easily used with both hands to type consequently.

The lesser-known keyboardKey accessibility trait

The keyboardKey accessibility trait is perhaps one of the lesser-known about traits within UIAccessibility.

Like the other accessibility traits, it tells an assistive app how an accessibility element is to behave and how it should be treated.

Adding the keyboardKey trait onto an accessibility element like a UIButton will tell VoiceOver to treat that element just like a keyboard key. That is, it's to be used for typing.

Adding the keyboardKey trait automatically adds support for VoiceOver users to customise their preference for typing.

As noted by Dani Devesa in Traits of a good accessible IOS app, adding the keyboardKey trait to a UIButton will mean it is no longer announced as 'button' by VoiceOver.

An excellent example of this can be found in the iOS Calculator app.

Each input in the calculator supports the VoiceOver user typing preference by employing the keyboardKey trait.

iOS calculator app
iOS calculator inputs use the keyboardKey trait.


If you add a custom keyboard or keypad to your iOS application, use the keyboardKey trait.

Doing so gives control to somebody like Sarah to access and interact with content in their preferred way.

Consider that some people will find typing painful and want to avoid it altogether if they can.

Support alternative methods to complete tasks typically dependent upon typing; for example, use FaceID when appropriate to minimise text input.