Accessibility

Accessible apps can be used by everyone, regardless of their limitations or disabilities. By making your app accessible, you can reach broader markets and expand your user base.

Your users do not necessarily have the same abilities as you. Consider your app’s user experience from the perspective of someone with a seeing, hearing, interacting, or learning impairment. Is your app still operable if someone with one of these impairments tries to use it?

Four facets of accessibility: Seeing, Hearing, Interacting, and Learning

Apple has done the majority of the work on the system level to make your app accessible—by providing features like screen zoom, visual alerts, AssistiveTouch, and Guided Access—but there is more you can do as a developer to enhance the accessibility of your app.

Working with VoiceOver

The primary way OS X and iOS apps present information is through a graphical user interface (GUI), so you need to pay particular attention to visual accessibility. Blind and low-vision users interact with your app using VoiceOver, a screen-reading technology built into the operating system that speaks your app's user interface aloud. VoiceOver users use special gestures or keyboard commands to explore and control the GUI. Standard inputs—such as mouse movements and finger swipes—are translated by VoiceOver to move the VoiceOver cursor, which reads an element’s accessibility information.

VoiceOver helps low-vision users navigate the GUI by interpreting touches differently
VoiceOver interpretation on OS X and iOS

The standard UI elements provided by AppKit and UIKit are accessible to VoiceOver by default. You only need to provide a description for visual UI elements such as images or icons that don't already have text associated with them. You can change an element’s accessibility description and other default accessibility behavior—such as the role of an element, or whether VoiceOver should read the element—directly in Interface Builder.

Custom UI elements and views, on the other hand, must conform to the NSAccessibility or UIAccessibility protocol so that they can describe themselves to VoiceOver to be read aloud. These are the same protocols that standard controls in AppKit and UIKit adopt. By adopting these protocols and implementing their methods, you provide VoiceOver the information it needs to make your custom UI elements accessible.

The best way to confirm that your app works well with VoiceOver is to interact with your app using VoiceOver. Enable VoiceOver on iOS in Settings > General > Accessibility and on OS X in System Preferences > Accessibility (or hit Command-F5). VoiceOver is a sophisticated tool, but it only takes a few minutes to learn the basics. Navigate through your user interface using VoiceOver to make sure all your features are accessible and all of your UI elements have appropriate descriptions. Verify that your app promotes a positive accessibility experience by following the advice in “Testing the Accessibility of Your iPhone Application”.

Related Articles

Sample Code Projects

  • ImageMapExample