滚动内容以显示 NSTextView 上的当前光标位置

Scrolling Content to Show Current Cursor Position on NSTextView

我有一个用 NSScrollView 包装的 NSTextView 控件对象。我想做的是让当前位置的文本字符串隐藏在内容视图下方时可见。

参考上图,

NSUInteger cPosition = [[[textView1 selectedRanges] objectAtIndex:0] rangeValue].location;
[textView1 scrollRangeToVisible:NSMakeRange(0,cPosition)];

滚动视图将自身滚动到某个位置,以便所选字符串(文档)位于内容视图的底部。 (第 11 行)。那不是我想要的。当滚动视图隐藏在内容视图下方时(例如,在第 14 行),我希望滚动视图能够自行滚动以在当前光标位置显示文本字符串。我怎样才能改进我的代码?

非常感谢。

一种解决方案是使用 NSString 的 enumerateSubstringsInRange:options:usingBlock: 方法和 NSStringEnumerationByParagraphs 选项,并将包含您的 cPosition 的范围传递给 scrollRangeToVisible:。这将使包含您的 cPosition 的段落可见。