メインウィンドウにNSScrollViewアイテムがあります。プログラムを起動するたびに、スクロールビューにテキストが表示され、中央から始まります。ユーザーは一番上から読み始めるべきではありませんが、なぜアプリはそれを中央で起動するのですか?ありがとう!
1 に答える
これは、ビューを正しく設定していない場合に発生する可能性があります。
私が持っている情報は次のとおりです。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];