区分由于用户操作和程序设置而开始编辑

Distinguishing between EditingDidBegin because of user action vs programatic setting

当我以编程方式设置 UITextField 的文本时,EditingChanged 操作不会发送到我的视图控制器,只有当用户通过键盘更改文本时才会发送该操作。

但是,当我在文本字段上调用 ​​becomeFirstResponder() 时,它会发送 EditingDidBegin 操作。所以我无法判断编辑是否开始是因为用户点击了 UITextField,还是因为我以编程方式进行了编辑。你知道我如何轻松区分两者吗?

我正在寻找一种方法来了解用户何时点击 UITextField 以及仅当用户点击它时,而不是在其上调用 becomeFirstResponder 时。你知道吗?

when I call becomeFirstResponder()

秘诀在于,当您调用 becomeFirstResponder() 时, 调用它。 您的 密码是运行。 一切尽在掌握。你可以随心所欲

因此,如果您需要让 EditingChanged 处理程序知道您调用了 becomeFirstResponder(),您只需事先对这一事实进行标记。例如,您可以在调用 becomeFirstResponder() 之前将 Bool 属性 justCalledBecomeFirstResponder 设置为 true。现在,您的 EditingChanged 处理程序只需在继续之前检查(并可能重置为 false)此 Bool 属性。