Umsetzung NSText Delegatmethoden in PyObjC und Kakao
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?
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.