Frage

In dem Projekt, das ich baue, würde Ich mag eine Methode namens habe, wenn ich einen Text in ein bestimmtes Textfeld einfügen. Ich kann nicht scheinen, dies funktioniert, aber hier ist, was ich versucht habe,

I implimented eine benutzerdefinierte Klasse (basierend auf NSObject) ein Delegierter für mein Textfeld zu sein, gab es dann die Methode: textDidChange:

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

ich instanziiert dann ein Objekt dieser Klasse in Interface Builder, und setzen Sie ihn der Delegierte des NSTextField zu sein. Dies scheint jedoch nichts zu tun. Allerdings, wenn ich bauen den Beispielcode von http://www.programmish.com/?p=30 scheint alles perfekt zu funktionieren. Wie impliment ich diese Delegierten Code, so dass es tatsächlich funktioniert?

War es hilfreich?

Lösung

Der Grund dafür ist nicht für Sie arbeiten, ist, dass textDidChange_ kein Delegatmethode ist. Es ist eine Methode auf dem NSTextField, die die Benachrichtigung über die Änderung postet. Wenn man sich die Dokumentation für textDidChange peek haben, werden Sie sehen, dass sie den tatsächlichen Namen des Delegatmethode erwähnt:

  

Diese Methode bewirkt, dass die Delegierten des Empfängers ein controlTextDidChange erhalten: Mitteilung. Siehe die NSControl Klassenspezifikation für weitere Informationen über den Text Delegatmethode.

Die delegierte Methode tatsächlich heißt controlTextDidChange_ und basiert auf der NSTextField geordneten Klasse erklärt, NSControl.

Ändern Sie Ihre Delegatmethode an:

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

, und es sollte für Sie arbeiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top