1

メインウィンドウにNSScrollViewアイテムがあります。プログラムを起動するたびに、スクロールビューにテキストが表示され、中央から始まります。ユーザーは一番上から読み始めるべきではありませんが、なぜアプリはそれを中央で起動するのですか?ありがとう!

4

1 に答える 1

2

これは、ビューを正しく設定していない場合に発生する可能性があります。
私が持っている情報は次のとおりです。1:InterfaceBuilderを使用してビューを設定します。
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 に答える