【问题标题】: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)
   }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 2016-04-21
    • 2011-09-12
    • 2010-10-06
    • 1970-01-01
    相关资源
    最近更新 更多