2010-08-24 46 views
1

我想在NSScrollView的NSTextView內提供幾個填充像素。我已經回顧了this post,並且使用setTextContainerInset爲左邊界,右邊界和底部邊界提供了技巧。但只要文本滾動頂部緩衝區就會丟失。與覆蓋textContainerOrigin相同的東西。在該帖子中的另一個答案是:在NSScrollView中圍繞NSTextView填充

TextEdit的做法(在Wrap to Page模式下)是將文本視圖置於較大視圖內,並將該較大視圖設置爲滾動的文檔視圖視圖。

但是,如果我這樣做(使用,說一個NSBox)內容不再滾動。我是否錯過了關於這個特殊技巧的東西,或者是否有其他人可以提出的技術?

+0

我想做另一種方式 - 刪除NSTextView具有的填充。 – adib 2012-11-12 05:07:10

回答

1

順便說一句,我最終通過繼承NSClipView,覆蓋SETFRAME :, setFrameOrigin完成這一點: ,和setFrameSize,並在這些方法中添加我的填充以黑客攻擊的原點和寬度。

1

您的報價似乎缺少一個步驟。您需要確保您的新文檔視圖跟蹤文本視圖框架中的更改並調整大小以適合自己。您可以打開NSViewFrameDidChangeNotification你的文本視圖與-setPostsFrameChangedNotifications:,然後讓你的新文檔視圖偵聽來自您的文本視圖通知..

+0

感謝您的快速響應。但是,一旦我收到NSViewFrameDidChangeNotification讓我知道內部文本視圖想要滾動,我該如何告訴外部滾動視圖? – stdout 2010-08-25 12:28:40

+1

使用NSTextView的-scrollRangeToVisible :(從NSText繼承)並傳入文本視圖的-selectedRange(可包含零長度插入點)。 – 2010-08-25 15:20:44

+0

再次感謝您的持續響應,但是如果我使用scrollRangeToVisible(在最內層的文本視圖中,我的文本實際上是),似乎沒有任何事情發生。我正在使用: r = NSMakeRange([[textView string] length],0); [textView scrollRangeToVisible:r]; 但我想我錯過了更重要的東西在這裏。在NSBox「介於」我的滾動視圖和我的文本視圖之間,兩者之間的所有「連接」都不會被破壞?例如ScrollView如何知道何時顯示垂直滾動條?當我使用滾動條時,文本視圖如何知道它需要滾動?等等。 – stdout 2010-08-27 16:30:04