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

# Accessibility for AppKit

Make your AppKit apps accessible to everyone who uses macOS.

## 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>.

AppKit 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. AppKit 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 AppKit elements, see  [`NSAccessibilityProtocol`](/documentation/AppKit/NSAccessibilityProtocol).

If your app contains custom user interface elements that subclass [`NSView`](/documentation/AppKit/NSView), enhance the accessibility of those elements using the role-based protocols in [Custom Controls](/documentation/AppKit/custom-controls). If your app contains custom user interface elements that don’t inherit from [`NSView`](/documentation/AppKit/NSView) or one of the other AppKit classes with built-in accessibility, make those elements accessible by subclassing [`NSAccessibilityElement`](/documentation/AppKit/NSAccessibilityElement-swift.class).

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

## Topics

### Essentials

  <doc://com.apple.documentation/documentation/Accessibility/integrating-accessibility-into-your-app>

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

### AppKit Elements

If you’re using a standard AppKit user interface element, you can override its existing accessibility attributes or use it as-is.

[`NSAccessibilityProtocol`](/documentation/AppKit/NSAccessibilityProtocol)

The complete list of properties and methods for accessible elements.

[`NSAccessibility`](/documentation/AppKit/NSAccessibility-swift.struct)

A namespace for accessibility symbols for AppKit apps.

### Custom View Subclasses

If you’re subclassing an AppKit view to create a custom user interface element, you can adopt one or more role-specific protocols to enhance that element’s accessibility.

[Custom Controls](/documentation/AppKit/custom-controls)

Support accessibility for custom user interface elements by adopting a role-specific protocol and implementing its methods.

[Accessibility Functions](/documentation/AppKit/accessibility-functions)

Global accessibility functions for custom views and controls.

### Custom Elements

If you’re designing a completely custom user interface element that doesn’t subclass an AppKit view, you must subclass the accessibility element class.

[`NSAccessibilityElement`](/documentation/AppKit/NSAccessibilityElement-swift.class)

The basic infrastructure necessary for interacting with an assistive app.

### Accessibility Types

[`NSAccessibility.Action`](/documentation/AppKit/NSAccessibility-swift.struct/Action)

Constants that describe types of actions.

[`NSAccessibility.AnnotationAttributeKey`](/documentation/AppKit/NSAccessibility-swift.struct/AnnotationAttributeKey)

Keys for annotation attributes.

[`NSAccessibilityAnnotationPosition`](/documentation/AppKit/NSAccessibilityAnnotationPosition)

Constants that specify the position where the annotation applies.

[`NSAccessibility.Attribute`](/documentation/AppKit/NSAccessibility-swift.struct/Attribute)

Constants that describe attributes.

[`NSAccessibility.FontAttributeKey`](/documentation/AppKit/NSAccessibility-swift.struct/FontAttributeKey)

Keys for font attributes.

[`NSAccessibilityOrientation`](/documentation/AppKit/NSAccessibilityOrientation)

Values that indicate the orientation of accessibility elements, such as scroll bars and split views.

[`NSAccessibility.OrientationValue`](/documentation/AppKit/NSAccessibility-swift.struct/OrientationValue)

Values that indicate the orientation of user interface elements, such as scroll bars and split views.

[`NSAccessibility.ParameterizedAttribute`](/documentation/AppKit/NSAccessibility-swift.struct/ParameterizedAttribute)

Values that describe parameterized attributes.

[`NSAccessibility.Role`](/documentation/AppKit/NSAccessibility-swift.struct/Role)

Values that describe types of objects that accessibility elements represent.

[`NSAccessibilityRulerMarkerType`](/documentation/AppKit/NSAccessibilityRulerMarkerType)

Values that indicate the marker type of an accessibility element.

[`NSAccessibility.RulerMarkerTypeValue`](/documentation/AppKit/NSAccessibility-swift.struct/RulerMarkerTypeValue)

Values that describe ruler marker types.

[`NSAccessibility.RulerUnitValue`](/documentation/AppKit/NSAccessibility-swift.struct/RulerUnitValue)

Values that indicate the unit values of a ruler or layout area.

[`NSAccessibility.SortDirectionValue`](/documentation/AppKit/NSAccessibility-swift.struct/SortDirectionValue)

Values that indicate the sort direction of a column.

[`NSAccessibilitySortDirection`](/documentation/AppKit/NSAccessibilitySortDirection)

Values that indicate the sort direction of a column.

[`NSAccessibility.Subrole`](/documentation/AppKit/NSAccessibility-swift.struct/Subrole)

Values that describe specialized object subtypes that accessibility elements represent.

[`NSAccessibilityUnits`](/documentation/AppKit/NSAccessibilityUnits)

Values that indicate the unit values of a ruler or layout area.



---

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)