0

在里面输入时,NSTokenField 我会显示这个值的建议, GetCompletionStringsNSTokenFieldDelegate

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

但是如果我从 NSTokenFiled 中完全删除所有符号,则不会触发此事件。

我需要在何时NSTokenFiled string value更改或清除或更新时收到通知,而无需单击输入按钮。

我在其中使用自定义 nstoken 字段TokenField : NSTokenField,我已经覆盖了 DidEndEditing,如下所示:

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

这仅在 enter clicked 后调用,不会在文本更改时触发...

我也尝试在视图控制器中处理我的视图的更改事件,但它没有被调用

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

2 回答 2

1

我在 xib 文件中将 Action 'Sent On End Editing' 设置为 Token Field,它现在可以工作了。

调用此更改事件后

在此处输入图像描述

于 2016-11-10T13:01:05.897 回答
0

您可以使用该Changed事件来捕获所有编辑更改NSTokenField;包括清除、剪贴板剪切等。

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);
于 2016-11-02T14:13:29.307 回答