如何允许滚动到NSTextView的末尾?

时间:2014-01-22 14:05:50

标签: macos cocoa nstextview

我希望用户能够滚动NSTextView,以便最后一行文本位于视图顶部。默认情况下,具有多页文本的NSTextView只允许用户滚动,直到最后一行文本位于视图的底部。我怎么能做到这一点?

1 个答案:

答案 0 :(得分:3)

查看子类化NSLayoutManager并将您的子类分配给相关的NSTextView。它应该是一种非常简单的方式来检测何时被要求布局最后一行文本,并返回一个更高的矩形。您甚至可以使用:

- (void)setExtraLineFragmentRect:(NSRect)fragmentRect usedRect:(NSRect)usedRect textContainer:(NSTextContainer *)container;

// Sets the bounds and container for the extra line fragment.  The extra line fragment is used when the text backing ends with a hard line break or when the text backing is totally empty, to define the extra line which needs to be displayed at the end of the text.  If the text backing is not empty and does not end with a hard line break, this should be set to NSZeroRect and nil.  Line fragment rects and line fragment used rects are always in container coordinates.

您也可以尝试继承NSTextView的大小调整方法,并在其中添加空格。比如,尝试子类化-setFrameSize:并看看当你添加(scrollView的内容区域的高度) - (最后一行文本的高度)时会发生什么,并调用super。