2017-02-15 2 views
0

Ich möchte die Kontrolle erlangen, wenn der Einfügepunkt eine Combobox verlässt, damit ich testen kann, ob der Text mit einem Eintrag in der Liste der Combox übereinstimmt. Ich habe hinzugefügt, die bereits einen Delegierten meiner Ansicht-Controller für andere Combobox Funktionen, zum Beispiel:Wie benachrichtigt werden, wenn der Einfügepunkt eine NSComboBox verlässt

func comboBox(_ aComboBox: NSComboBox, completedString string: String) -> String? 

Die folgende Funktion sieht wie das, was ich will:

func control(_ control: NSControl, textShouldEndEditing fieldEditor: NSText) -> Bool 

Meine App-Code IDE identifiziert es als in der API. Wenn ich meinen Code ausführe, wird er nicht aufgerufen (ich habe eine print-Anweisung). Ich habe versucht, "Kontrolle" auf "ComboBox" ohne Erfolg zu ändern. Muss ich etwas Zusätzliches tun, damit diese Funktion aufgerufen wird?

aktualisiert

Wie von @Mangerlahn weist darauf hin, muss die Funktion in der Datenquelle sein. Ich habe es ohne Wirkung dorthin bewegt. Es war in der Delegierten.

extension TrackDialogViewController: NSComboBoxDataSource { 
... 
func control(_ control: NSControl, textShouldEndEditing fieldEditor: NSText) -> Bool {...} 
... 
} 
+1

Die Funktion control .. ist Teil des 'NSControlTextEditingDelegate' und damit Teil der NSComboBoxDelegate-Methoden. Wenn Sie sich als Delegat der ComboBox festgelegt haben, sollte die Methode aufgerufen werden. ComboBox (.. completedString ..) ist jedoch Teil der NSComboBoxDataSource, die sich von dem Delegaten unterscheidet. Stellen Sie also sicher, dass Sie als Delegierter UND-Datenquelle der ComboBox eingestellt sind. – mangerlahn

Antwort

0

Dummer Benutzerfehler. Ich habe ein RAID-Laufwerk verloren und musste neu starten. XCode wurde durcheinander gebracht und zeigte zwei Fenster für mein Projekt. Derjenige, den ich mir ansah, hatte keine Konsole.

Verwandte Themen