トップページドキュメント > テキストの入力と描画

高度なキー入力

keyDown:メソッドで、KeyDownイベント受け取ることにより、英数字の入力ができるようになりましたが、かな漢字変換を伴う日本語のような言語で文字を入力するには、入力サーバーの支援を受ける必要があります。

入力サーバーとは、キーボードでタイプされたキーから最終的な文字列を返すオブジェクトのことです。「ことえり」や「ATOK」などが入力サーバーの例です。例えば、ビューから「ことえり」に「asagakita[スペース][リターン]」と入力すると「朝が来た」と出力されます。

入力サーバーはcommand + [スペース]やその他の手段で切り替えることができます。ビューが個々の入力サーバーを追跡しなくて済むように、入力サーバーとのやり取りは入力マネージャを介して行われます。

入力サーバーの支援を受けるには、ビューにNSTextInputプロトコルを実装する必要があります。NSTextInputプロトコルの実装はランタイムでチェックされ、その結果によって、そのビューが入力サーバーのサポートを受けられるかどうかが決まります。実装されない場合、入力できるのは単純な英数字のみとなります。

タイプされたキーを入力サーバーに送るには、keyDown:メソッド内でinterpretKeyEvents:メソッドを呼びます。

- (void)keyDown:(NSEvent*)theEvent
{
    [self interpretKeyEvents:[NSArray arrayWithObject:theEvent]];
}

interpretKeyEvents:メソッドを呼ぶと、NSTextInputで定義されている各メソッドがコールバックされるので、これらのメソッドを介して入力サーバーと情報のやり取りをします。

Copyright(C)2001-2010 STRIPE-NET. All Right Reserved.