swift - 选项命令拖动时未调用 NSTextView 的 textViewDidChangeSelection
问题描述
我有一个 NSTextView。
当我拖动以更改选择或命令拖动或选项拖动时,将调用 textViewDidChangeSelection,但当我进行选项命令拖动时不会调用。
有时日志会输出以下内容:
[Framework] Shared items array is empty
[Framework] No shared items can be accessed
选项命令拖动当然会改变选择,所以我希望在选项命令拖动发生时得到通知。
解决方案
“willChangeSelectionFromCharacterRanges”文档说只有当 setSelectedRange 或 setSelectedRanges 的“stillSelecting”参数设置为 false 时才会调用它。因此,我将 NSTextView 子类化以覆盖该参数,如下所示:
class NeverStillSelectingTextView : NSTextView {
override func setSelectedRanges(_ ranges: [NSValue], affinity: NSSelectionAffinity, stillSelecting stillSelectingFlag: Bool) {
super.setSelectedRanges(ranges, affinity: affinity, stillSelecting: false)
}
override func setSelectedRange(_ charRange: NSRange, affinity: NSSelectionAffinity, stillSelecting stillSelectingFlag: Bool) {
super.setSelectedRange(charRange, affinity: affinity, stillSelecting: false)
}
}
现在 willChangeSelectionFromCharacterRanges 在您命令选项拖动时始终被调用。
推荐阅读
- rust - 如何从 Stream 特征中读取
- c# - HTTP MVC 错误 | 将 React 与 ASP.Net 集成
- firebase - 尝试为 Android 应用启用 Cloud Vision 文本识别 API
- pine-script - tradingview 占位符未处于警报状态
- apache - Apache 配置文件中的禁用目录列表被忽略
- google-sheets - 在瀑布图中将 x 轴解释为位置,而不是文本
- wpf - wpf应用程序位于最顶层时如何禁用转义键
- cuda - 关于accroutine的一些问题
- django - 如何使用 IP 访问 Vue.js 应用程序
- reactjs - React 测试库显示无 CSS 类