Apple hat bequem eine Callback-Methode erstellt, mit der Sie überprüfen können, ob die neuen Token, die zu einem NSTokenField hinzugefügt werden, gültig sind:
%Vor%Ich habe das implementiert, und es stellt sich heraus, dass es großartig funktioniert, außer in einem Fall. Wenn der Benutzer beginnt, ein Token einzugeben, das Token jedoch noch nicht vollständig eingegeben hat und der Benutzer die TAB-Taste drückt, wird die Validierungsmethode nicht aufgerufen.
Dies bedeutet, dass ich sicherstellen kann, dass alle eingegebenen Tokens gültig sind, es sei denn, der Benutzer arbeitet daran, dass sie die Tabulatortaste drücken können, um die Validierung zu umgehen.
Weiß jemand, wie diese Situation richtig gehandhabt wird?
Ich habe es eine Weile versucht und festgestellt, dass das Token-Feld control: isValidObject: des NSControlTextEditingDelegate-Protokolls aufruft, wenn die Tab-Taste gedrückt wird. Sie können also eine Delegate-Methode wie
implementieren %Vor%Der Parameter 'object' ist der Inhalt Ihres unvollständigen Tokens. Wenn die Methode NO zurückgibt, wird das Token nicht in das Array gültiger Tokens eingefügt.
Ich habe auch mit diesem Problem zu kämpfen und festgestellt, dass die Verwendung von control: isValidObject wie von zonble vorgeschlagen fast auf die Lösung, aber es ist schwierig zu bestimmen, ob NO oder YES basierend auf dem Objektparameter zurückgeben. Soweit ich das beurteilen kann, ist dieses Problem nur auf die Tab-Taste beschränkt, so habe ich ein Paar Methoden wie folgt implementiert:
Ich stelle fest, dass dies furchtbar hässlich ist, aber es ist die einzige Möglichkeit, NSTokenField zu vermeiden, Token auf der Registerkarte zu erstellen, ohne andere NSTextField-Verhaltensweisen von NSTokenField zu beeinflussen (zB Bewegen des Cursors an eine neue Position usw.).
%Vor%Tags und Links objective-c cocoa nstokenfield