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フレームワーク側のカテゴリで拡張されていた。ここまで調べる必要はなさそうだけど(笑)。