如何在NSTextView的插入位置更改中获得回调?
我试过KVO
[textView addObserver:self forKeyPath:@"selectedRange" options:NSKeyValueObservingOptionNew context:NULL];
但是当我使用箭头键或鼠标移动时,我不会得到回调...可能是因为范围是一个结构,它会修改其成员(我只在文本发生变化时才回调)
但是如何监控插入位置变化?
答案 0 :(得分:1)
使用- (void)textViewDidChangeSelection:(NSNotification *)aNotification
答案 1 :(得分:0)
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)
}
}