7

当使用“向上”和“向下”键在文本视图中逐行移动时,它会表现出这种滚动行为 - 当光标位于最顶部并且我点击“向上”(反之亦然)时,它会将文档滚动一半向上翻页,即当前行现在位于 textview 的中间。

是否可以禁用此行为?是否可以让它滚动一行?以便当前行始终保持在顶部(或底部)?

4

2 回答 2

2

我知道我来晚了一点,但由于这个问题没有得到正确的回答,我会试一试。我对 NSTextViews 有同样的问题。当使用 -scrollRangeToVisible 将插入位置带到视图的可见矩形时,它具有滚动习惯,将插入符号放在屏幕的(垂直)中间。我所做的是使用 [NSView scrollRectToVisible] 代替,因为它滚动将矩形带到视图的可见矩形所需的最小距离:

NSRange caretRng = NSMakeRange(caretLocation, 0);
NSLayoutManager* lm = [view layoutManager];
NSRange glyphRange = [lm glyphRangeForCharacterRange:caretRng actualCharacterRange:nil];
NSRect glyphRect = [lm boundingRectForGlyphRange:glyphRange inTextContainer:[view textContainer]];
[view scrollRectToVisible:glyphRect];

希望能帮助到你!

于 2013-02-21T15:16:39.753 回答
1

NSTextView(通过 NSText)有一个名为-scrollRangeToVisible:的方法。考虑继承 NSTextView 并覆盖 -scrollRangeToVisible 以直接指定您自己的滚动行为。

如果您需要更具体的帮助来获得正确的行为,请发布一个单独的问题,具体说明您想要的行为以及您尝试获得它的代码。

于 2012-09-04T14:26:30.613 回答