1

我的主窗口中有一个 NSScrollView 项目。每当我启动程序时,滚动视图中都会有文本,它从中心开始。用户不应该从顶部开始阅读,但为什么应用程序会在中心启动它?谢谢!

4

1 回答 1

2

如果您没有正确设置视图,则可能会发生这种情况。
以下是我掌握的信息: 1:您使用 Interface Builder 来设置视图。
2:您正在使用 NSTextView
3:您用于更改文本的代码是:
[[_chapterContent insertText:[Book objectForKey:bookAndChapters]];
4:当您使用 NSTextView 时,我们不会处理由翻转坐标引起的问题。

我不确定您是否应该为此任务使用 insertText。至少,你可以使用这样的东西......

range.location = 0;
range.length = 0;
[textView setSelectedRange:range];

...设置插入符号的位置。

然后你可以做一个...

[textView scrollRangeToVisible:range];

...如果你喜欢。

注意:您可以使用长度为 0 和 [textStorage length] 内的任何位置的 setSelectedRange 来定位插入符号。

- 让我知道这是否会产生您需要的改变。

我建议使用...

textStorage = [textView textStorage];
range.location = 0;
range.length = [textStorage length];
if([self shouldChangeTextInRange:range replacementString:string])
{
    [textStorage beginEditing];
    [textStorage replaceCharactersInRange:range withAttributedString:attrStr];
    [textStorage endEditing];        
}

...用属性字符串替换文本。如果您不需要属性字符串,可以使用更简单的方法:

    [textStorage replaceCharactersInRange:range withString:str];

多年来,它对我(和其他许多人)都很有效;这是更改 NSTextView 内容的推荐方法。- 如果你只想用字符串替换整个内容,你可以使用

[textView setString:string];
于 2013-02-16T10:59:02.870 回答