Xamarin 检测文本字段的程序更改

Xamarin Detect Programatic Change of Text Field

在 Xamarin 中,我需要检测文本字段的编程更改。 .valueChanged() 仅在最终用户更改值时有效。当值被我无权访问的方法更改时,我需要一种调用方法的方法。看来这对于观察者来说是可行的,但我找不到任何关于如何为此实现它的信息。

幸运的是,我能够弄清楚如何做到这一点。假设您有一个 UITextField "myTextField"

ViewDidLoad()方法中,一个人会把 myTextField.AddObserver ("text", NSKeyValueObservingOptions.New, ObserveValue);

第一个参数是您要观察的值。可以找到 UITextField 的属性列表 here。最后一个参数是您希望在观察到更改时调用的方法。

您调用的方法必须使用参数 Foundation.NSObservedChange 所以我的方法签名是 public void ObserveValue(Foundation.NSObservedChange a) 希望这可以帮助遇到类似问题的其他人。

对我来说,除委托方法外没有任何工作 textField:shouldChangeCharactersInRange:replacementString::

    [Export("textField:shouldChangeCharactersInRange:replacementString:")]
    public bool ShouldChangeCharacters(UITextField textField, NSRange range, string replacementString)
    {
        return true;
    }

查看此 bugzilla report 了解更多信息。