我正在尝试在产品中创建一个功能,使用户能够将textview分成两部分。这样做的方法是从它的superview中删除textview,创建一个NSSplitView并将textview和一个新的NSTextView实例添加到这个splitview。最后,我将这两个textviews共享相同的文本存储,以使它们共享相同的内容。
效果很好。但问题是当我想让两个textviews中的一个改变textstorage时。 NSLayoutManager中的replaceTextStorage方法导致两个NSTextView都更改textStorage。 API文档声明:
replaceTextStorage :全部 NSLayoutManager对象共享 然后是原始的NSTextStorage对象 分享新的。这种方法使 保持所需的所有调整 这些关系完好无损,不像 setTextStorage:方法
因此有意义的是它会这样做。但问题是如何才能让两个(或更多)文本视图首先共享相同的存储空间,然后让它们使用自己的存储空间?
我已经尝试更换layoutManager甚至创建NSTextViews的新实例但没有运气......
有什么建议吗?
答案 0 :(得分:1)
如果您希望两个NSTextView有差异NSTextStorage,那么您必须创建两个并行文本系统。
首先,从以下架构开始(这是Text System Overview中描述的架构):
然后,在每个NSLayoutManager上调用replaceTextStorage:
方法设置不同的NSTextStorage。