2010-06-16 76 views
1

我试图在产品中提供用户将文本视图分解为两部分的功能。这样做的方式是从它的超级视图中删除textview,制作一个NSSplitView,并将textview以及一个新的NSTextView实例添加到这个splitview中。最后,我让这两个textview共享相同的文本存储,以使它们共享相同的内容。来回切换NSTextViews的文本存储

它很好用。但问题是,当我想使两个textviews中的一个更改文本存储。 NSLayoutManager中的replaceTextStorage方法会导致NSTextView更改textStorage。该API文档状态:

replaceTextStorage:所有 NSLayoutManager对象共享 原NSTextStorage对象,然后 股新的。这种方法使 所有必要的调整保持 这些关系不变,不像 setTextStorage :.

所以它是有道理的,它会这样做。但问题是,如何让两个(​​或更多)文本视图先共享相同的存储空间,然后让他们使用自己的存储空间?

我试着更换的layoutManager甚至使NSTextViews的新实例,但没有运气...

有什么建议?

回答

1

如果你想要两个NSTextView有差别NSTextStorage,那么你必须创建两个并行的文本系统。

首先,开始以下的架构(在Text System Overview此一描述):

  • 一个常见NSTextStorage
  • 第一与NSLayoutManager/NSTextContainer/NSTextView
  • 第二与NSLayoutManager分支分支/ NSTextContainer/NSTextView

然后,调用每个NSLayoutManagerreplaceTextStorage:方法来设置不同NSTextStorage。

+0

非常感谢你......根本没有看到......真棒 – 2010-06-16 18:53:42