控制 NSTextView 更新以处理闪烁并提高速度
-
26-09-2019 - |
题
我有一个子类 NSTextView,我正在一个单独的线程中(使用 PerformSelectorOnMainThread:withObject:waitUntilDone:)使用选择器replaceCharactersInRange:withString:、setSelectedRange: 和 insertText: 对其进行操作。当 NSTextView 更新每个操作的显示时,我遇到了文本闪烁和性能不佳的问题。
关于如何控制显示更新的时间,以便我可以仅在实际需要时更新它,有什么建议吗?我尝试使用各种组合 setNeedsDisplay:NO (来自主线程和后台线程,在更新之前和之后),这似乎被忽略了。
预先感谢任何能够提供一些见解的人。
解决方案
我认为你应该操纵底层 NSTextStorage
对于文本视图,而不是直接调用视图的事件相关方法。这是模型-视图-控制器架构的一个非常经典的示例:这 NSTextView
是视图和 NSTextStorage
是模型。只要有可能,您都希望直接操作模型,并让控制器/视图层根据需要更新视图。
不隶属于 StackOverflow