区分由于用户操作和程序设置而开始编辑
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 属性。
当我以编程方式设置 UITextField 的文本时,EditingChanged 操作不会发送到我的视图控制器,只有当用户通过键盘更改文本时才会发送该操作。
但是,当我在文本字段上调用 becomeFirstResponder() 时,它会发送 EditingDidBegin 操作。所以我无法判断编辑是否开始是因为用户点击了 UITextField,还是因为我以编程方式进行了编辑。你知道我如何轻松区分两者吗?
我正在寻找一种方法来了解用户何时点击 UITextField 以及仅当用户点击它时,而不是在其上调用 becomeFirstResponder 时。你知道吗?
when I call
becomeFirstResponder()
秘诀在于,当您调用 becomeFirstResponder()
时,您 调用它。 您的 密码是运行。 你 一切尽在掌握。你可以随心所欲
因此,如果您需要让 EditingChanged 处理程序知道您调用了 becomeFirstResponder()
,您只需事先对这一事实进行标记。例如,您可以在调用 becomeFirstResponder()
之前将 Bool 属性 justCalledBecomeFirstResponder
设置为 true
。现在,您的 EditingChanged 处理程序只需在继续之前检查(并可能重置为 false
)此 Bool 属性。