3

私が構築しているプロジェクトでは、特定のテキスト フィールドにテキストを貼り付けるときに呼び出されるメソッドが必要です。これを機能させることはできないようですが、これが私が試したことです

カスタム クラス (NSObject に基づく) をテキスト フィールドのデリゲートとして実装し、次のメソッドを指定しました: textDidChange:

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

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

4

1 に答える 1

3

これが機能しない理由はtextDidChange_、デリゲート メソッドではないためです。NSTextField変更の通知を投稿する上のメソッドです。のドキュメントをのぞくとtextDidChange、デリゲート メソッドの実際の名前が記載されていることがわかります。

このメソッドにより、受信側のデリゲートは controlTextDidChange: メッセージを受信します。テキスト デリゲート メソッドの詳細については、NSControl クラスの仕様を参照してください。

デリゲート メソッドは実際に呼び出され、スーパークラスでcontrolTextDidChange_宣言されます。NSTextFieldNSControl

デリゲート メソッドを次のように変更します。

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

そしてそれはあなたのために働くはずです。

于 2009-06-01T18:24:44.640 に答える