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

时间:2016-01-06 13:09:03

标签: objective-c cocoa nstextview nsscrollview

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

enter image description here

参考上图,

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

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

Muchos thankos。

1 个答案:

答案 0 :(得分:1)

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