Assistive technologies like VoiceOver and accessibility features like display accommodations expand the ways people can interact with their devices. Because these technologies and features integrate with system-provided interactions, it's essential that you support the system interactions correctly in your app.
Give all controls and interactive elements a hit target that measures at least 44pt x 44pt. People with limited mobility need larger hit targets to help them interact with your app. Controls that are too small can be frustratingly difficult for all users to hit.
Don’t override the platform gestures. People expect system gestures—such as swiping down to reveal Notification Center or the macOS trackpad gestures available in System Preferences—to work regardless of the app they’re using.
Prefer simplified gestures for interaction. Complex gestures such as multifinger gestures, long presses, or repeated button presses can be challenging for many people. Using the simplest gestures possible improves the experience for everyone who interacts with your app.
Provide alternative ways to perform gesture-based actions. Include an option for people who may not be able to perform a specific gesture. For example, if swiping deletes a row in a table, you should also give people an alternative way to delete items through an edit mode or by offering a Delete button in an item detail view.
Make drag and drop accessible in your iOS app. When you use the accessibility APIs to identify drag sources and drop targets in your app, assistive technologies can help people drag and drop onscreen items. For developer guidance, see accessibilityDragSourceDescriptors and accessibilityDropPointDescriptors.
Don't require 3D Touch (iOS) or Force Touch (Apple Watch) to access your app's core functionality. Not everyone can press the screen to get the additional functionality provided by 3D Touch and Force Touch. Ensure that all users can perform important actions in your app even if they can't use 3D Touch or Force Touch.
Support the system-defined haptics. Many people rely on haptics to help them interact with apps when they can't see the screen. For example, system apps play haptics to notify people when a task has succeeded or failed or when an event is about to happen. Be sure to use the system-defined haptics consistently in your app so that you don't confuse people.
Buttons and Controls
Characterize the accessibility of custom elements. You can use accessibility traits (UIKit) and properties (AppKit) to tell assistive technologies how an element behaves. For example, using button or NSAccessibilityButton to characterize a view as a button means that VoiceOver speaks the view's description followed by the word button, which tells people that the view behaves like a button.
Use a consistent style hierarchy to communicate the relative importance of buttons. People can turn on Button Shapes to make it easier to distinguish active buttons from surrounding content. When you use a consistent hierarchy of button styles, people can grasp the importance of buttons based on their appearance. For example, the most important buttons use a rounded rectangle shape and a color fill; secondary buttons aren't color-filled, but may display text or a glyph in the key color; and the least critical buttons use underlined text.
Prefer the system-provided switch. UIKit provides a switch that indicates its state by the position of its knob and its fill color. For some people, however, the addition of labels makes it easier to perceive whether a switch is on or off. When you use system-provided switches, iOS automatically displays on/off glyphs within them when people turn on On/Off Labels.
Consider giving links a visual indicator, such as an underline. It’s fine to use color to indicate a link, but if you use it as the only indicator, people with color blindness may not be able to perceive the distinction. For more information about using color to communicate in your app, see Color and Contrast.
Let people input information by speaking instead of typing. Adding a dictation button in a text entry field lets people choose speech as their preferred input method. If you create a custom keyboard, be sure to include a microphone key for dictation.
Support Siri or Siri Shortcuts for performing important tasks by voice alone. To learn more about enabling Siri interactions in your app, see SiriKit.
Don’t prevent users from selecting plain text. Many users rely on using selected text as input for text to speech (TTS) or for looking up translations.