【问题标题】:NSTextView monitor caret position changeNSTextView 监控插入符号位置变化
【发布时间】:2015-08-13 10:38:48
【问题描述】:
如何获取 NSTextView 插入符号位置更改的回调?
我试过 KVO
[textView addObserver:self forKeyPath:@"selectedRange" options:NSKeyValueObservingOptionNew context:NULL];
但是当我用箭头键或鼠标移动时我没有收到回调...可能是因为范围是一个结构,它会修改其成员(当文本更改时我只收到回调)
但是如何监控插入符号位置的变化?
【问题讨论】:
标签:
macos
cocoa
key-value-observing
nstextfield
nstextview
【解决方案1】:
Swift 4 版本:
public func textViewDidChangeSelection(_ notification: Notification) {
guard let textView = notification.object as? NSTextView,
let string = textView.textStorage?.string else {
return
}
if let nsRange = textView.selectedRanges.first as? NSRange,
let range = Range(nsRange, in: string) {
print(nsRange)
print(range.lowerBound.encodedOffset, range.upperBound.encodedOffset)
}
}