2010-06-16 3 views
1

사용자가 텍스트 뷰를 2 개로 분할 할 수있는 기능을 제공하려고합니다. 이 작업을 수행하는 방법은 superview에서 textview를 제거하고 NSSplitView를 만들고 textview와 새로운 NSTextView 인스턴스를이 splitview에 추가하는 것입니다. 마지막으로이 두 텍스트 뷰를 동일한 텍스트 저장 공간으로 공유하여 동일한 내용을 공유하도록합니다.NSTextViews의 텍스트 저장 전환 앞뒤

잘 작동합니다. 하지만 문제는 두 텍스트 뷰 중 하나가 텍스트 저장 공간을 변경하려고 할 때입니다. NSLayoutManager의 replaceTextStorage 메소드는 NSTextView가 textStorage를 변경하도록합니다. API 설명서 상태 :

replaceTextStorage : 다음 주 새로운 하나를 원래 NSTextStorage 오브젝트를 공유하는 모든 NSLayoutManager 객체. 이 방법을 사용하면 setTextStorage :와 달리 을 이러한 관계를 그대로 유지하는 데 필요한 모든 조정이 이루어집니다.

그래서 그렇게 할 수 있습니다. 하지만 문제는 두 개 (또는 그 이상)의 텍스트 뷰가 같은 저장 영역을 먼저 공유하도록하고 이후에 자신의 고유 한 영역을 사용하도록하는 것입니다.

나는 ... LayoutManager의 교체, 심지어 새로운 NSTextViews의 인스턴스하지만 행운을

어떤 제안을 시도했습니다?

답변

1

두 NSTextView의 차이가 NSTextStorage이되도록하려면 두 개의 병렬 텍스트 시스템을 만들어야합니다.

우선, (이 하나가 Text System Overview에 설명) 다음 구조로 시작 :

  • NSLayoutManager와 NSLayoutManager/NSTextContainer /를 NSTextView
  • 번째 분기 일반적인 NSTextStorage
  • 제 지사/NSTextContainer /를 NSTextView는

이어서 다를 설정 NSLayoutManager 각각의 메소드를 호출 replaceTextStorage: NSTextStorage입니다.

+0

정말 고마워요 ... 전혀 보지 못했어요. –