<!--
{
  "documentType" : "article",
  "framework" : "UIKit",
  "identifier" : "/documentation/UIKit/accessibility-for-uikit",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "Accessibility for UIKit"
}
-->

# Accessibility for UIKit

Make your UIKit apps accessible to everyone who uses iOS and tvOS.

## Discussion

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 <doc://com.apple.documentation/documentation/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 <doc://com.apple.documentation/documentation/UIKit/uiaccessibility-protocol>.

If your app contains custom user interface elements that don’t inherit from [`UIView`](/documentation/UIKit/UIView) or one of the other UIKit classes with built-in accessibility, make those elements accessible by subclassing [`UIAccessibilityElement`](/documentation/UIKit/UIAccessibilityElement).

If you build your app with SwiftUI, see <doc://com.apple.documentation/documentation/SwiftUI/View-Accessibility>.

## Topics

### Essentials

[UIAccessibility](/documentation/UIKit/uiaccessibility-protocol)

A set of methods that provides accessibility information about views and controls in an app’s user interface.

[UIAccessibilityContainer](/documentation/UIKit/uiaccessibilitycontainer)

Provide a set of methods that view subclasses use to make subcomponents accessible as separate elements.

[Supporting VoiceOver in your app](/documentation/UIKit/supporting-voiceover-in-your-app)

Add VoiceOver support to make your iOS app more accessible to users who are blind or have low vision.

### Behaviors

  <doc://com.apple.documentation/documentation/ObjectiveC/uiaccessibilityfocus>

[`protocol UIAccessibilityIdentification`](/documentation/UIKit/UIAccessibilityIdentification)

Methods that associate a unique identifier with elements in your user interface.

[`protocol UIAccessibilityReadingContent`](/documentation/UIKit/UIAccessibilityReadingContent)

Methods to implement for an object that represents content that users read, such as a book or an article.

[`protocol UIAccessibilityContentSizeCategoryImageAdjusting`](/documentation/UIKit/UIAccessibilityContentSizeCategoryImageAdjusting)

Methods to determine when to adjust images for different content size categories.

[`struct UIAccessibilityTextualContext`](/documentation/UIKit/UIAccessibilityTextualContext)

Constants that describe a named context that helps identify and classify the type of text inside an element.

### Guided Access

[`static func configureForGuidedAccess(features: UIGuidedAccessAccessibilityFeature, enabled: Bool, completionHandler: (Bool, (any Error)?) -> Void)`](/documentation/UIKit/UIAccessibility/configureForGuidedAccess(features:enabled:completionHandler:))

Enables or disables the specified accessibility features while using Guided Access.

[`struct UIGuidedAccessAccessibilityFeature`](/documentation/UIKit/UIGuidedAccessAccessibilityFeature)

Constants that describe accessibility features for Guided Access.

[`enum Code`](/documentation/UIKit/UIAccessibility/GuidedAccessError/Code)

Error codes for Guided Access.

### Actions

  <doc://com.apple.documentation/documentation/ObjectiveC/uiaccessibilityaction>

[`class UIAccessibilityCustomAction`](/documentation/UIKit/UIAccessibilityCustomAction)

A custom action to perform on an accessible object.

[`typealias Handler`](/documentation/UIKit/UIAccessibilityCustomAction/Handler)

A closure type that defines a handler to perform for an action.

  <doc://com.apple.documentation/documentation/Accessibility/delivering_an_exceptional_accessibility_experience>

### Elements

[`class UIAccessibilityElement`](/documentation/UIKit/UIAccessibilityElement)

An element that should be accessible to users with disabilities, but that isn’t accessible by default.

[`protocol UIScrollViewAccessibilityDelegate`](/documentation/UIKit/UIScrollViewAccessibilityDelegate)

A set of methods you can implement to provide accessibility information for a scroll view.

[`protocol UIPickerViewAccessibilityDelegate`](/documentation/UIKit/UIPickerViewAccessibilityDelegate)

A set of methods you can implement to provide accessibility information for individual components of a picker view.

### Containers

[`protocol UIAccessibilityContainerDataTable`](/documentation/UIKit/UIAccessibilityContainerDataTable)

Methods that convey information about the contents of a table.

[`protocol UIAccessibilityContainerDataTableCell`](/documentation/UIKit/UIAccessibilityContainerDataTableCell)

Methods that provide the location of a cell in a table.

[`enum UIAccessibilityContainerType`](/documentation/UIKit/UIAccessibilityContainerType)

Constants that indicate the type of content in a data-based container.

### Navigation

[`class UIAccessibilityCustomRotor`](/documentation/UIKit/UIAccessibilityCustomRotor)

A context-sensitive function that helps VoiceOver users find the next instance of a related element.

[`class UIAccessibilityCustomRotorItemResult`](/documentation/UIKit/UIAccessibilityCustomRotorItemResult)

A target element that a custom rotor references.

[`class UIAccessibilityCustomRotorSearchPredicate`](/documentation/UIKit/UIAccessibilityCustomRotorSearchPredicate)

The search parameters that help determine the next matching custom rotor item result.

### Drag and drop support

[`class UIAccessibilityLocationDescriptor`](/documentation/UIKit/UIAccessibilityLocationDescriptor)

An accessibility descriptor for a specific geometric point of interest within a view, for use by assistive apps.

### Notifications

[Notification names](/documentation/UIKit/notification-names)

The names of notifications that the accessibility system generates.

[Notification dictionary keys](/documentation/UIKit/notification-dictionary-keys)

Handle notifications with keys in the user info dictionary.

[`static func post(notification: UIAccessibility.Notification, argument: Any?)`](/documentation/UIKit/UIAccessibility/post(notification:argument:))

Posts a notification to assistive apps.

### Conversions

[`static func convertToScreenCoordinates(CGRect, in: UIView) -> CGRect`](/documentation/UIKit/UIAccessibility/convertToScreenCoordinates(_:in:)-9ziiu)

Converts the specified rectangle from view coordinates to screen coordinates.

[`static func convertToScreenCoordinates(UIBezierPath, in: UIView) -> UIBezierPath`](/documentation/UIKit/UIAccessibility/convertToScreenCoordinates(_:in:)-6dx4a)

Converts the specified path object to screen coordinates and returns a new path object with the results.

### Convenience functions

[`static func focusedElement(using: UIAccessibility.AssistiveTechnologyIdentifier?) -> Any?`](/documentation/UIKit/UIAccessibility/focusedElement(using:))

Returns the accessibility element that’s currently in focus by the specified assistive app.

[`static var hearingDevicePairedEar: UIAccessibility.HearingDeviceEar`](/documentation/UIKit/UIAccessibility/hearingDevicePairedEar)

The current pairing status of Made for iPhone hearing devices.

[`struct HearingDeviceEar`](/documentation/UIKit/UIAccessibility/HearingDeviceEar)

Constants that specify how a person is using a hearing device.

[`static func registerGestureConflictWithZoom()`](/documentation/UIKit/UIAccessibility/registerGestureConflictWithZoom())

Warns users that app-specific gestures conflict with the system-defined Zoom accessibility gestures.

[`static func requestGuidedAccessSession(enabled: Bool, completionHandler: (Bool) -> Void)`](/documentation/UIKit/UIAccessibility/requestGuidedAccessSession(enabled:completionHandler:))

Transitions the app to or from Single App mode asynchronously.

[`static func zoomFocusChanged(zoomType: UIAccessibility.ZoomType, toFrame: CGRect, in: UIView)`](/documentation/UIKit/UIAccessibility/zoomFocusChanged(zoomType:toFrame:in:))

Notifies the system when the app’s focus changes to a new location.

### Capabilities

[`static var isAssistiveTouchRunning: Bool`](/documentation/UIKit/UIAccessibility/isAssistiveTouchRunning)

A Boolean value that indicates whether AssistiveTouch is in an enabled state.

[`static var isVoiceOverRunning: Bool`](/documentation/UIKit/UIAccessibility/isVoiceOverRunning)

A Boolean value that indicates whether VoiceOver is in an enabled state.

[`static var isSwitchControlRunning: Bool`](/documentation/UIKit/UIAccessibility/isSwitchControlRunning)

A Boolean value that indicates whether the Switch Control setting is in an enabled state.

[`static var isShakeToUndoEnabled: Bool`](/documentation/UIKit/UIAccessibility/isShakeToUndoEnabled)

A Boolean value that indicates whether the Shake to Undo setting is in an enabled state.

[`static var isClosedCaptioningEnabled: Bool`](/documentation/UIKit/UIAccessibility/isClosedCaptioningEnabled)

A Boolean value that indicates whether the Closed Captions + SDH setting is in an enabled state.

[`static var isBoldTextEnabled: Bool`](/documentation/UIKit/UIAccessibility/isBoldTextEnabled)

A Boolean value that indicates whether the Bold Text setting is in an enabled state.

[`static var isDarkerSystemColorsEnabled: Bool`](/documentation/UIKit/UIAccessibility/isDarkerSystemColorsEnabled)

A Boolean value that indicates whether the Increase Contrast setting is in an enabled state.

[`static var isGrayscaleEnabled: Bool`](/documentation/UIKit/UIAccessibility/isGrayscaleEnabled)

A Boolean value that indicates whether the Color Filters and the Grayscale settings are in an enabled state.

[`static var isGuidedAccessEnabled: Bool`](/documentation/UIKit/UIAccessibility/isGuidedAccessEnabled)

A Boolean value that indicates whether the Guided Access setting is in an enabled state.

[`static var isInvertColorsEnabled: Bool`](/documentation/UIKit/UIAccessibility/isInvertColorsEnabled)

A Boolean value that indicates whether the Classic Invert setting is in an enabled state.

[`static var isMonoAudioEnabled: Bool`](/documentation/UIKit/UIAccessibility/isMonoAudioEnabled)

A Boolean value that indicates whether the Mono Audio setting is in an enabled state.

[`static var isReduceMotionEnabled: Bool`](/documentation/UIKit/UIAccessibility/isReduceMotionEnabled)

A Boolean value that indicates whether the Reduce Motion setting is in an enabled state.

[`static var isReduceTransparencyEnabled: Bool`](/documentation/UIKit/UIAccessibility/isReduceTransparencyEnabled)

A Boolean value that indicates whether the Reduce Transparency setting is in an enabled state.

[`static var isSpeakScreenEnabled: Bool`](/documentation/UIKit/UIAccessibility/isSpeakScreenEnabled)

A Boolean value that indicates whether the Speak Screen setting is in an enabled state.

[`static var isSpeakSelectionEnabled: Bool`](/documentation/UIKit/UIAccessibility/isSpeakSelectionEnabled)

A Boolean value that indicates whether the Speak Selection setting is in an enabled state.

[`static var isOnOffSwitchLabelsEnabled: Bool`](/documentation/UIKit/UIAccessibility/isOnOffSwitchLabelsEnabled)

A Boolean value that indicates whether the On/Off Labels setting is in an enabled state.

[`static var isVideoAutoplayEnabled: Bool`](/documentation/UIKit/UIAccessibility/isVideoAutoplayEnabled)

A Boolean value that indicates whether the Auto-Play Video Previews setting is in an enabled state.

[`static var buttonShapesEnabled: Bool`](/documentation/UIKit/UIAccessibility/buttonShapesEnabled)

A Boolean value that indicates whether the Button Shapes setting is in an enabled state.

[`static var prefersCrossFadeTransitions: Bool`](/documentation/UIKit/UIAccessibility/prefersCrossFadeTransitions)

A Boolean value that indicates whether the Reduce Motion and the Prefer Cross-Fade Transitions settings are in an enabled state.

[`static var shouldDifferentiateWithoutColor: Bool`](/documentation/UIKit/UIAccessibility/shouldDifferentiateWithoutColor)

A Boolean value that indicates whether the Differentiate Without Color setting is in an enabled state.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)