<!--
{
  "availability" : [
    "macOS: 10.10.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "AppKit",
  "identifier" : "/documentation/AppKit/NSAccessibilityElement-swift.class",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "AppKit"
    ],
    "preciseIdentifier" : "c:objc(cs)NSAccessibilityElement"
  },
  "title" : "NSAccessibilityElement"
}
-->

# NSAccessibilityElement

The basic infrastructure necessary for interacting with an assistive app.

```
class NSAccessibilityElement
```

## Overview

Create subclasses of the [`NSAccessibilityElement`](/documentation/AppKit/NSAccessibilityElement-swift.class) class to represent any of your user interface elements that don’t inherit from [`NSView`](/documentation/AppKit/NSView) or from one of the standard AppKit controls. This class represents your user interface element in the accessibility hierarchy and manages the details necessary for working with assistive apps.

To support accessibility features for a custom user interface element:

1. Create your [`NSAccessibilityElement`](/documentation/AppKit/NSAccessibilityElement-swift.class) subclass by using [`element(withRole:frame:label:parent:)`](/documentation/AppKit/NSAccessibilityElement-swift.class/element(withRole:frame:label:parent:)). You can also set these values using [`setAccessibilityRole(_:)`](/documentation/AppKit/NSAccessibilityProtocol/setAccessibilityRole(_:)), [`setAccessibilityLabel(_:)`](/documentation/AppKit/NSAccessibilityProtocol/setAccessibilityLabel(_:)) and [`setAccessibilityParent(_:)`](/documentation/AppKit/NSAccessibilityProtocol/setAccessibilityParent(_:)).
2. Call the parent’s [`accessibilityAddChildElement(_:)`](/documentation/AppKit/NSAccessibilityElement-swift.class/accessibilityAddChildElement(_:)) method to add your subclass. You can also add the subclass to its parent’s [`accessibilityChildren`](/documentation/AppKit/NSAccessibility-c.protocol/accessibilityChildren) array using [`setAccessibilityChildren(_:)`](/documentation/AppKit/NSAccessibilityProtocol/setAccessibilityChildren(_:)).
3. In your subclass, call [`setAccessibilityFrameInParentSpace(_:)`](/documentation/AppKit/NSAccessibilityElement-swift.class/setAccessibilityFrameInParentSpace(_:)). This ensures that your control moves with its superview.
4. In your subclass, adopt a role-specific protocol, customize the role, and post notifications just as you would handle any other accessible control. See [Custom Controls](/documentation/AppKit/custom-controls).
5. In your subclass, implement any additional properties and methods you may need to use to further customize your user interface element’s accessibility behavior. See [`NSAccessibilityProtocol`](/documentation/AppKit/NSAccessibilityProtocol).

## Topics

### Supporting the Accessibility Hierarchy

[`element(withRole:frame:label:parent:)`](/documentation/AppKit/NSAccessibilityElement-swift.class/element(withRole:frame:label:parent:))

Instantiates and configures a new accessibility element.

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

Adds a child to the accessibility element in the accessibility hierarchy.

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

Returns the accessibility element’s frame in its parent’s coordinate system.

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

Sets the accessibility element’s frame in its parent’s coordinate system.

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

The accessibility element’s frame in its parent’s coordinate system.



---

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)