NSTextView逐行滚动

Eci*_*ana 6 cocoa scroll nstextview

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

是否可以禁用此行为?是否可以只滚动一行?那么当前行始终位于顶部(或底部)?

小智 2

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

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];
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!