2009-06-01 2 views
3

私が構築しているプロジェクトでは、テキストを特定のテキストフィールドに貼り付けるときに呼び出されるメソッドがあります。 textDidChange:PyObjcとCocoaでNSTextデリゲートメソッドを実装する

私は私がそれをする方法を与え、その後、私のテキストフィールドの委譲する(NSObjectのに基づいて)カスタムクラスをimplimentedこの作業を取得するように見えるが、ここで私は

を試みた何ができません

class textFieldDelegate(NSObject): 
    def textDidChange_(self, notification): 
     NSLog("textdidchange") 

次に、インターフェイスビルダーでこのクラスのオブジェクトをインスタンス化し、それをNSTextFieldのデリゲートに設定しました。しかし、これは何もしないようです。しかし、私がhttp://www.programmish.com/?p=30からサンプルコードをビルドすると、すべてが正常に動作するようです。このデリゲートコードを実際に動作させるにはどうすればよいでしょうか?

答えて

3

これがうまくいかない理由は、textDidChange_がデリゲートメソッドではないということです。これは、変更通知を投稿するNSTextFieldのメソッドです。あなたがtextDidChangeのためにドキュメントで覗いている場合、あなたはそれがデリゲートメソッドの実際の名前に言及していることがわかります:メッセージ:

この方法はcontrolTextDidChangeを受信するための受信機のデリゲートの原因となります。テキストデリゲートメソッドの詳細については、NSControlクラスの仕様を参照してください。

デリゲートメソッドは、実際にcontrolTextDidChange_と呼ばれ、NSTextFieldスーパー、NSControlに宣言されています。

にあなたのデリゲートメソッドを変更し

def controlTextDidChange_(self, notification): 
    NSLog("textdidchange") 

、それはあなたのために働く必要があります。

関連する問題