Pixel Pedals of Tomakomai

北海道苫小牧市出身の初老の日常

NSTextView

GUIアプリには疎いので、例えば、テキストエディタをどう作るのかとか、とんと見当もつかない。文字列を選択して処理をしたり、強調したい文字色を変更したりとか、どうやってるんだろう? って、疑問に思ったので、Cocoaでのやり方を少しだけ調べてみた。



- (IBAction)bold:(id)sender
{
NSTextStorage *text_storage = [textarea textStorage];
NSRange range = [textarea selectedRange];
[text_storage applyFontTraits: NSBoldFontMask
range: range];
}





textareaはOutletのNSTextView。Cocoaでは、UIであるNSTextViewに対応したデータを保持するNSTextStorageを持っていて、そこに手を加えることで表示される文字列をいじれるようだ。これはNSMutableAttributedStringのサブクラスであり、applyFontTraits:range:はそいつがもっているメッセージだ。



さらに突っ込んで調べてみたところ、applyFontTraits:range:は Foundationフレームワークでは定義されておらず、 Application Kitフレームワーク側のカテゴリで拡張されていた。ここまで調べる必要はなさそうだけど(笑)。