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 了解更多信息。
在 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 了解更多信息。