Accessibility for UIKit
Make your UIKit apps accessible to everyone who uses iOS and tvOS.
Overview
Making your app accessible means making it usable by everyone. By designing your app with accessibility in mind, you make it possible for everyone to enjoy your app. For more information, see Accessibility.
UIKit controls and views come with built-in accessibility, providing an accessible user experience by default. Typically, you don’t need to do extra work to enable the standard accessibility features.
In some cases, you might want to modify the default values to better represent your app, to provide additional context, or to modify the user’s flow through the app. UIKit makes these customizations straightforward, involving a few lines of code or Interface Builder adjustments as you define your user interface. For more information about customizing accessibility for UIKit elements, see UIAccessibility.
If your app contains custom user interface elements that don’t inherit from UIView or one of the other UIKit classes with built-in accessibility, make those elements accessible by subclassing UIAccessibilityElement.
If you build your app with SwiftUI, see Accessibility modifiers.
Topics
Essentials
Behaviors
UIAccessibilityFocusUIAccessibilityIdentificationUIAccessibilityReadingContentUIAccessibilityContentSizeCategoryImageAdjustingUIAccessibilityTextualContext
Guided Access
configureForGuidedAccess(features:enabled:completionHandler:)UIGuidedAccessAccessibilityFeatureUIAccessibility.GuidedAccessError.Code
Actions
UIAccessibilityActionUIAccessibilityCustomActionUIAccessibilityCustomAction.HandlerDelivering an exceptional accessibility experience
Elements
Containers
Navigation
UIAccessibilityCustomRotorUIAccessibilityCustomRotorItemResultUIAccessibilityCustomRotorSearchPredicate
Drag and drop support
Notifications
Conversions
Convenience functions
focusedElement(using:)hearingDevicePairedEarUIAccessibility.HearingDeviceEarregisterGestureConflictWithZoom()requestGuidedAccessSession(enabled:completionHandler:)zoomFocusChanged(zoomType:toFrame:in:)
Capabilities
isAssistiveTouchRunningisVoiceOverRunningisSwitchControlRunningisShakeToUndoEnabledisClosedCaptioningEnabledisBoldTextEnabledisDarkerSystemColorsEnabledisGrayscaleEnabledisGuidedAccessEnabledisInvertColorsEnabledisMonoAudioEnabledisReduceMotionEnabledisReduceTransparencyEnabledisSpeakScreenEnabledisSpeakSelectionEnabledisOnOffSwitchLabelsEnabledisVideoAutoplayEnabledbuttonShapesEnabledprefersCrossFadeTransitionsshouldDifferentiateWithoutColor