Skip to content

Commit 8172bfe

Browse files
committed
STTextView: Implement missing accessibility setters
This commit implements the missing setter methods for accessibility properties, allowing VoiceOver and other assistive technologies to control the text view. It adds setters for selected text, selected text ranges, and focus state, which correspond to the existing getter methods.
1 parent 79ad332 commit 8172bfe

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

Sources/STTextViewAppKit/STTextView+NSAccessibilityProtocol.swift renamed to Sources/STTextViewAppKit/STTextView+Accessibility.swift

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,31 @@ extension STTextView {
4444
textLayoutManager.textSelectionsString()
4545
}
4646

47+
open override func setAccessibilitySelectedText(_ accessibilitySelectedText: String?) {
48+
self.replaceCharacters(in: selectedRange(), with: accessibilitySelectedText ?? "")
49+
}
50+
4751
open override func accessibilitySelectedTextRange() -> NSRange {
4852
selectedRange()
4953
}
5054

55+
open override func setAccessibilitySelectedTextRanges(_ accessibilitySelectedTextRanges: [NSValue]?) {
56+
for range in accessibilitySelectedTextRanges?.map(\.rangeValue) ?? [] {
57+
self.setSelectedRange(range)
58+
}
59+
}
60+
5161
open override func isAccessibilityFocused() -> Bool {
5262
isFirstResponder && isSelectable
5363
}
64+
65+
open override func setAccessibilityFocused(_ accessibilityFocused: Bool) {
66+
if !accessibilityFocused, isFirstResponder {
67+
window?.makeFirstResponder(nil)
68+
} else if accessibilityFocused {
69+
window?.makeFirstResponder(self)
70+
}
71+
}
5472
}
5573

5674
extension STTextView {
@@ -130,5 +148,4 @@ extension STTextView {
130148
open override func accessibilityString(for range: NSRange) -> String? {
131149
attributedSubstring(forProposedRange: range, actualRange: nil)?.string
132150
}
133-
134151
}

0 commit comments

Comments
 (0)