由于用户操作与编程设置而区分EditingDidBegin

时间:2016-01-17 16:39:41

标签: ios uitextfield uicontrol

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

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

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

1 个答案:

答案 0 :(得分:2)

  

当我致电becomeFirstResponder()

秘诀是,当您致电becomeFirstResponder()时,会致电它。 您的代码正在运行。 处于控制之中。你可以做任何你想做的事。

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