2010-06-16 26 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