AccessibilityUIExamples/Outline/CustomOutlineViewAccessibilityRowElement.swift
/* |
See LICENSE folder for this sample’s licensing information. |
Abstract: |
NSAccessibilityElement subclass for outline view items. |
*/ |
import Cocoa |
class CustomOutlineViewAccessibilityRowElement: NSAccessibilityElement { |
var disclosureTriangleCenterPoint = CGPoint() |
var canDisclose = false |
/** |
Override activation point to calculate it's position in screen coordinates relative to it's parent. |
This is necessary to support the window moving. |
*/ |
override func accessibilityActivationPoint() -> NSPoint { |
var result = NSPoint() |
if let parentView = accessibilityParent() as? CustomOutlineView { |
result = NSAccessibilityPointInView(parentView, disclosureTriangleCenterPoint) |
} |
return result |
} |
/** Override accessibilityDisclosed setter to update the the node this element represents |
This allows an accessibility client to expand or collapse a row in an outline |
(rather than just being able to read that state) |
VoiceOver, for example, exposes this via the Control+Command+\ command. |
*/ |
override func setAccessibilityDisclosed(_ accessibilityDisclosed: Bool) { |
if let parentView = accessibilityParent() as? CustomOutlineView { |
super.setAccessibilityDisclosed(accessibilityDisclosed) |
parentView.setExpandedStatus(expanded: accessibilityDisclosed, rowIndex: accessibilityIndex()) |
} |
} |
// Disallow calling accessibilityDisclosed setter on elements that can't disclose (leaf nodes). |
override func isAccessibilitySelectorAllowed(_ selector: Selector) -> Bool { |
if selector == #selector(setAccessibilityDisclosed) { |
return canDisclose |
} |
return super.isAccessibilitySelectorAllowed(selector) |
} |
override func accessibilityRole() -> NSAccessibilityRole? { |
return NSAccessibilityRole.row |
} |
override func accessibilitySubrole() -> NSAccessibilitySubrole? { |
return NSAccessibilitySubrole.outlineRow |
} |
} |
Copyright © 2017 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2017-09-12