Text View (NSTextView)

ここには Text View に関することを書いていく。

Text View 自体の設定は、Interface Builder でできることが多いので、あまり扱わない。

NSRange.new(location,length) Text View に対していろいろ属性を付けるときに範囲を指定するが、NSRange で指定する。

range = NSRange.new(0,0)

ただ、RubyCocoa では NSRange のところを配列で代用できる([location,length])。だから、上の例は [0,0] で置き換えてもかまわないはず。

setBackgroundColor(color) 背景の色を指定する。色については、色の扱いを参照。

@textView.setBackgroundColor(NSColor.yellowColor)

setFont(font) フォントを指定する。

@textView.setFont(NSFont.fontWithName_size("Lucida Grande",14.0))

setString(string) 表示する文字列を指定する。これを使うと、すべてのテキストを置き換えることになる。

@textView.setString("text")

setTextColor(color) Text View 全体の文字に色をつける。

@textView.setTextColor(NSColor.blackColor)

setTextColor_range(color,range) 範囲を指定して、文字に色をつける。

@textView.setTextColor_range(NSColor.blackColor,range)

insertText(string) 文字列を選択範囲に挿入する。Text View で選択してある文字のところか、カーソルのあるところ、

あるいは、下の setSelectedRange で範囲を指定してそこに挿入する。

@textView.insertText("Inserting Text")

setSelectedRange(range) 選択範囲を指定する。

@textView.setSelectedRange(range)

全体のテキストを置き換える場合は、まず、テキストの長さを得てから、それで選択範囲を指定して挿入すればいい。

@textView.setSelectedRange([0,@textView.string.length)

@textView.insertText("Inserting Text")

Note: setString(string) と insertText(string) の違いはいろいろあるのかもしれないけど、今まで気づいた中で一番大きなものは、

setString だと Text View に元々組み込まれている undo が効かないが、insertText だと効く。なので、何か処理をしたものを

簡単に undo 処理したければ、insertText を使う。

setSelectedRanges(array) 選択範囲を複数指定する。

@textView.setSelectedRanges(ary)

selectedRange 選択されているテキストの範囲を得る。NSRange オブジェクトが返る。

selectedTextRange = @textView.selectedRange

selectedRanges 選択されているテキストの範囲を得る。NSRange オブジェクトの配列が返る。

selectedTextRanges = @textView.selectedRanges

scrollRangeToVisible(range) 指定範囲まで Text View を移動して表示する。NSRange オブジェクトで指定する。

これを使って、読み込んだテキストを insertText で表示させた後にテキストの頭を表示させるようにもできる。

@textView.scrollRangeToVisible([0,0])

RTFFromRange(range) 指定範囲のテキストをリッチテキストとして NSData に変換する。

これは NSText のメソッドだけど、NSTextView は NSText のメソッドを継承してるので使える。

textData = @textView.RTFFromRange(0,@textView.string.length)

readRTFDFromFile(path) 指定したパスの .rtf もしくは .rtfd ファイルを読み込んで Text View に表示する。

これも NSText のメソッドだけど、NSTextView は NSText のメソッドを継承してるので使える。

@textView.readRTFDFromFile(path)