2010-12-15 7 views
1

私はココアでちょっと錆びているので、専門用語などについて私に感謝します。NSTextFieldに文字が入力されるたびに通知を受け取る方法は?

本質的に逆スペルチェッカーであるものを書いてみたいと思います。のように、単語が正しく綴られている場合は、ランダムな単語の場合はスペルミスのあるバージョンに変更されます。誰かをプレイする無害ないたずら。

それで、私の主なヒッチは、これをどうやって行うのか分かりません(私が知っている大きな問題です)。私はtexteditがオンザフライのスペルチェックを実行するのが好きですが、そのような振る舞いをNSTextFieldの一般的な振る舞いに取り入れたいと思います。文字がNSTextFieldに入力されるたびにアプリケーションに通知する方法はありますか?

編集私の目的は、システム内のNSTextFieldが継承の問題としてこの振る舞いを取得するため、このシステム全体にすることです。私は深刻なハッキングここにいくつか開いています。

答えて

1

あなたの質問に答えるために:NSTextFieldコントロールにデリゲートを添付し、NSTextFieldはNSTextオブジェクトでテキストを編集する共有フィールドエディタを使用しています

- (void)controlTextDidChange:(NSNotification *)aNotification 

注意を実装します。あなたはあなたが望むことをするためにそれを操作することができるかもしれません。

+0

私のポストでこれを言い忘れましたが、これをすべてのNSTextFieldがこの動作を呈するという点でシステム全体の動作にしたいと考えています。 – Alex

+0

私は確かにそれが可能ではないことを願っています! –

+0

私の編集では、必要であれば、深刻なハッキングがあると言いました。もし私がそうしなければならないなら、私はカーネルレベルまで下に行くことができます(これはいたずらからルートキットにかかるでしょう) – Alex

0

私はアイデアが好きです!これはかなり簡単に行うべきです。まず、NSTextFieldまたはNSTextViewを使用するかどうかを決定する必要があります。 TextEdit.appは、より広範なワープロタイプのタスクに適したNSTextViewを使用します。 NSTextFieldは、最小限のフォーマットのテキストをより小さくしたものです。これに取り組むにはたくさんの方法がありますが、私はあなたにカップルを与えます。

NSTextFieldの場合、コントローラオブジェクトをテキストフィールドの代理人に設定し、controlTextDidChange:メソッドをオーバーライドします。ユーザーがテキストフィールドに文字を入力すると、このメッセージが表示されます。フィールドの文字列を変更して、スペルの誤った単語を導入することができます。

NSTextViewの場合、スペルチェックを有効にして、テキストビューのデリゲートメソッドtextView:didCheckTextInRange:types:options:results:orthography:wordCount:を使用できます。スペルチェックの結果を変更できるはずです。

関連する問題