EditableをNOにしたNSTextViewに文字列を追加する方法

EditableがTrueであればinsertTextとかでプログラムから文字列を追記できるんですけど、ログの表示とかでreadonlyにしようとEditableをFalseにしたとたん、insertTextしても無視されます。

ドキュメントを読むと、どうやらinsertTextはユーザからの入力と同じ扱いになるようで、そのためEditableな状態じゃないとダメみたいです。

こんなときは、NSTextViewのデータを保持しているNSTextStrageを操作することで対応できます。


//NSTextView* textView;

-(void)appendText:(NSString*)text;
{
  //描画を一時的に止める
  [textView.textStorage beginEditing];

  //テキストを追加
  NSAttributedString* atrstr = [[[NSAttributedString alloc] initWithString:text] autorelease];
  [textView.textStorage appendAttributedString: atrstr];

  //描画再開
  [textView.textStorage endEditing];

  //最終行へスクロール
  [textView autoscroll:nil];
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です