UITextField 在被代码更改时触发 UITextFieldTextDidChangeNotification?
Posted
技术标签:
【中文标题】UITextField 在被代码更改时触发 UITextFieldTextDidChangeNotification?【英文标题】:UITextField fires UITextFieldTextDidChangeNotification when changed by code? 【发布时间】:2012-10-20 03:32:11 【问题描述】:我正在尝试添加一个UIViewController
作为UITextFieldTextDidChangeNotification
通知的观察者。当我通过在文本字段中键入来更改文本时,一切都很顺利。但是,如果我尝试通过调用 [_textfield setText:@"Blahblah"] 来更改文本,通知似乎不会被触发。
这是预期的方式吗?
谢谢!
【问题讨论】:
【参考方案1】:大多数事件通常都是这样。当事件由用户驱动时,您需要通知。但是,当事件由显式代码更改驱动时,您不希望收到通知。由于您正在进行显式调用以进行更改,因此您还可以选择调用通知处理程序。这是一种更灵活的方法。
下面是一个示例,说明为什么您不希望在您自己的代码触发事件时发送通知。想象一下,当您的代码收到通知时,您验证文本并根据验证更新文本字段。这可能会导致通知/更改的无限循环。
【讨论】:
非常感谢!我只是确保不是其他东西坏了。谢谢~ 不幸的是,Apple 并不是 100% 与这类东西保持一致。虽然我想不出一个具体的例子,但我知道有一些情况,至少在典型的委托方法模型中,即使使用显式方法调用而不只是使用用户或系统驱动的事件。以上是关于UITextField 在被代码更改时触发 UITextFieldTextDidChangeNotification?的主要内容,如果未能解决你的问题,请参考以下文章
UITextField在UIDatePicker操作事件时不触发操作事件
更改 UITextField 的文本不会触发 rx.text 活页夹