2016-11-02 3 views
0

während im Inneren NSTokenField Eingabe ich Vorschläge für diesen Wert zeigen, mit GetCompletionStrings von NSTokenFieldDelegateNSTokenField Wert geändert Benachrichtigung

public override string [] GetCompletionStrings (NSTokenField tokenField, string substring, nint tokenIndex, nint selectedIndex) 
     { 
      //return my values 
     } 

aber wenn ich komplett alles aus NSTokenFiled dieses Ereignis symboled entfernen wird nicht gefeuert werden.

Ich brauche eine Benachrichtigung, wenn NSTokenFiled string value geändert oder gelöscht oder aktualisiert wird, ohne die Eingabetaste zu klicken.

ich verwenden, um benutzerdefinierte nstoken Feld TokenField : NSTokenField im Inneren hatte ich DidEndEditing außer Kraft setzen, wie folgt aus:

public override void DidEndEditing (NSNotification notification) 
     { 
      if (EditingFinished != null) { 
       EditingFinished (null, null); 
      } 
      base.DidEndEditing (notification); 
     } 

dies erst nach Eingabe geklickt aufgerufen wird, wird auf Textänderung nicht gefeuert ...

I auch versuchte Änderungsereignis aus meiner Sicht in view-Controller zu handhaben, aber es ist nicht

TagsSearchField.EditingFinished += OnTagFilterSet; 
     TagsSearchField.Delegate = new TagFieldDelegate(); 
     TagsSearchField.Changed += (o, e) => { 
     //debug 
     }; 
+0

Ich habe auch Ereignis im Konstruktor zu handhaben versucht: [Export ("initWithCoder:")] \t \t öffentlichen TokenField (NSCoder Coder): base (Coder) \t \t { \t \t \t this.Changed + = (o, e) => { \t \t \t \t // debug \t \t \t}; \t} } aber immer noch kein Ergebnis – Nininea

Antwort

0

Sie verwenden, um das Changed Ereignis c genannt apture alle Bearbeitungsänderungen mit der NSTokenField; einschließlich klar, Zwischenablage Schnitte, etc ..

tokenField = new NSTokenField(new CGRect(100, 100, 300, 40)); 
tokenField.Delegate = this; 
tokenField.Changed += (object sender, EventArgs e) => 
{ 
    Console.WriteLine($"changed: {tokenField.StringValue}"); 
    var tokenArray = tokenField.ObjectValue as NSArray; 
    for (nuint i = 0; i < tokenArray.Count; i++) 
    { 
     Console.WriteLine(tokenArray.GetItem<NSString>(i)); 
    } 
}; 
View.AddSubview(tokenField); 
+0

Ich habe die Frage aktualisiert, leider funktioniert es nicht für mich – Nininea

+0

Ich habe Aktion 'Gesendet am Ende Bearbeitung', in Xib-Datei und es funktioniert jetzt. – Nininea

+0

GetCompletionStrings wird nicht aufgerufen, wenn die Änderung durchgeführt wird: / – Nininea

0

gesetzt Ich Aktion 'Sent On End Bearbeiten' auf Token Field, in xib Datei und es funktioniert jetzt.

Nach diesem Change-Ereignis aufgerufen wird

enter image description here

Verwandte Themen