ユーザーが NSTextView に何か新しいものを入力すると、挿入ポイントは現在のフォントに関連付けられている属性 (存在する場合) を使用します。これは、テキスト ビューの「typingAttributes」とも呼ばれます。ほとんどの場合、ユーザーは黒と白の背景で入力します。
ここで強調表示している (選択を行っていない) ため、カーソルの挿入ポイントで現在の色を取得する必要があります。
次の方法で属性をフェッチすることでそれを行うことができます。
// I think... but am not 100% certain... the selected range
// is the same as the insertion point.
NSArray * selectedRanges = [theTextView selectedranges];
if(selectedRanges && ([selectedRanges count] > 0))
{
NSValue * firstSelectionRangeValue = [selectedRanges objectAtIndex: 0];
if(firstSelectionRangeValue)
{
NSRange firstCharacterOfSelectedRange = [firstSelectionRangeValue rangeValue];
// now that we know where the insertion point is likely to be, let's get
// the attributes of our text
NSSDictionary * attributesDictionary = [theTextView.textStorage attributesAtIndex: firstCharacterOfSelectedRange.location effectiveRange: NULL];
// set these attributes to what is being typed
[theTextView setTypingAttributes: attributesDictionary];
// DON'T FORGET to reset these attributes when your selection changes, otherwise
// your highlighting will appear anywhere and everywhere the user types.
}
}
このコードをまったくテストしたり試したりしたことはありませんが、これで必要な場所にたどり着くはずです。