当我以编程方式设置UITextField的文本时,EditingChanged操作不会发送到我的视图控制器,只有当用户通过键盘更改文本时才会发送操作。
但是,当我在文本字段上调用becomeFirstResponder()时,它会发送EditingDidBegin操作。所以我无法判断是否开始编辑是因为用户点击了UITextField,或者因为我以编程方式进行了编辑。你知道我怎么能轻易区分这两者吗?
我正在寻找一种方法来了解用户何时点击UITextField,并且只有当用户点击它时,而不是当它在其上调用becomeFirstResponder时。你知道吗?
答案 0 :(得分:2)
当我致电
时becomeFirstResponder()
秘诀是,当您致电becomeFirstResponder()
时,您会致电它。 您的代码正在运行。 您处于控制之中。你可以做任何你想做的事。
因此,如果您需要您的EditingChanged处理程序知道您调用了becomeFirstResponder()
,那么您只需要事先记下这个事实。例如,您可以在调用justCalledBecomeFirstResponder
之前将Bool属性true
设置为becomeFirstResponder()
。现在,您的EditingChanged处理程序只需在继续之前检查(并可能重置为false
)此Bool属性。