gpt4 book ai didi

macos - 如何允许滚动超过 NSTextView 的末尾?

转载 作者:行者123 更新时间:2023-12-03 16:31:53 27 4
gpt4 key购买 nike

我希望用户能够滚动 NSTextView,以便最后一行文本位于 View 顶部。默认情况下,超过一页文本的 NSTextView 只会让用户滚动,直到最后一行文本位于 View 底部。我怎样才能做到这一点?

最佳答案

研究子类化 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 时会发生什么。

关于macos - 如何允许滚动超过 NSTextView 的末尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21285123/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com