2011-01-14 5 views
2

Mac OSXのテキスト表示では、一連のキーを押してアクセント付きの文字を入力することができます(例:e-acuteを得るためのオプション-e)。カスタムNSViewでこの機能にアクセスする方法はありますか?私の場合、NSOpenGLViewから派生したクラスがあります。私はkeyDownのレスポンダーを実装しました。そのため、単一のプレスから来るユニコード文字を得ることができますが、シーケンスでは個々のプレスのイベントを取得するだけです。私は、NSResponderからのinterpretKeyEvents:が助けてくれると思っていました。カスタムNSViewでアクセント付き文字を取得する

NSTextViewがコピーするものをコピーして自分で実装することはできますが、特に人が別のキーボード設定を使用している場合は、扱いにくいと思います。

答えて

1

私はいつも '進行中のテキスト'と呼ばれるテキストまたは挿入されるテキストがあなたのビューに到着したときにあなたに通知する他のメソッドを実装する必要があります。

NSViewはNSTextInputClientを実装する必要があります。 Cocoaの参考文献hereを参照してください。そのプロトコルのメソッドのいくつかを検索すると、このchunk of codeがgithubに見つかりました。非常に良い出発点のように見えます。

あなたが求めていることは、英語と少なくとも1つの他の西洋言語(フランス語は良い言語)でテストすれば十分でしょう。しかし長期的には、KotoeriとHangulのレイアウトの少なくとも1つでテストしたいと思うでしょう。しかし、私が上にリンクしたコードは、あなたがそれに投げることができるテキストの大部分を扱うように見えます。

1

Hhhmm ..かなりかわいいですね。

NSTextFieldは独自の編集機能を持たず、見えないNSTextViewのインスタンスである親ウィンドウの「フィールドエディタ」に委譲します。また、NSTextのウインドウがないとNSTextViewの動作が多くなります。

それチェックする価値があるかもしれませんどのようにNSTextFieldsフィールドエディターへのデリゲートとあなたは同じ方法ではなく、あなたのKeyDownイベントをやってのフィールドエディタに自分自身をフックすることができるかどうかを参照してください。イベント。

また、不可視のNSTextViewを作成し、各キーをそれに委任し、それに関連付けられたNSTextStorageを自分のビューに表示することもできます。

あなたが少し痛みを感じているように聞こえますが、それは私が探索することから始めるでしょう。もちろん

、私はココアテキストサブシステムウィザードだん..

私はこのことができます願っています。

関連する問題