Frage

Ich habe eine NSTextField in einem Fenster und habe ich eine sehr einfache MacRuby delegieren:

class ServerInputDelegate
    attr_accessor :parent

    def textDidChange(notification)
        NSLog notification.inspect
        parent.filter
    end
end

Und ich habe versucht, die Delegierten Steuerungseinstellung:

alt text http://grab.by/31Kr

Ich habe versucht, das Fenster und jedes anderes Objekt Stellung I die zu diesen Delegierten denken kann. Ich habe auch versucht, es zu anderen Delegierten (Anwendung zum Beispiel) Einstellung und Veranstaltungen wie applicationDidFinishLaunching ordnungsgemäß ausgelöst wird.

Gibt es einen Trick, den ich für diese Veranstaltung, um fehlte jedes Mal ausgelöst werden, der Inhalt dieser NSTextField ändert?

War es hilfreich?

Lösung

Subclass NSTextField und stellen Sie dann in IB die Klasse des Textfeldes Sie Unterklasse wollen „ServerInputDelegate.“ Sobald Sie mit der Eingabe beginnen sollte es für Sie automatisch vervollständigt.

class ServerInputDelegate < NSTextField

    def textDidChange(notification)
        NSLog notification.description
        puts self.stringValue
    end

end

Ergebnis

2010-04-30 14:37:24.810 TextFieldTextChanged[69109:a0f] NSConcreteNotification 0x200350b00 {name = NSTextDidChangeNotification; object = <NSTextView: 0x2003b95e0>
    Frame = {{2.00, 3.00}, {436.00, 17.00}}, Bounds = {{0.00, 0.00}, {436.00, 17.00}}
    Horizontally resizable: YES, Vertically resizable: YES
    MinSize = {436.00, 17.00}, MaxSize = {40000.00, 40000.00}
}

Andere Tipps

textDidChange:, vielleicht zum Verwechseln, ist eine NSTextDelegate Methode , was bedeutet, es funktioniert nur für NSText (und damit NSTextView) Objekte. Für eine NSTextField, sollten Sie nur die NSControl delegate Methode controlTextDidChange: Keine Notwendigkeit, Unterklasse.

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