2010-08-24 67 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