UITextField 清除按钮调用 didEndEditing 两次

Posted

技术标签:

【中文标题】UITextField 清除按钮调用 didEndEditing 两次【英文标题】:UITextField Clear Button Calls didEndEditing Twice 【发布时间】:2013-10-02 20:17:03 【问题描述】:

我有一个带有清除按钮的 UITextField。每当用户在文本字段上退出第一响应者时,它都会将更改提交给 Web 服务。

当用户点击清除按钮时,文本字段似乎会失去其第一响应者状态,从而导致调用 didEndEditing 委托方法。因此,使用旧的填充值进行了 Web 服务调用。然后,textfield被清空,再次调用didEndEditing,再次调用webservice。

为什么会这样?我希望清除按钮清空文本,然后在委托上调用 didEndEditing,这样您只会收到一条消息。

【问题讨论】:

“清除按钮”是指文本字段中嵌入的清除按钮还是您的自定义按钮?默认清除按钮应该只是清除字段中的文本,而不是调用 didEndEditing。处理键盘和文本字段的部分代码会有所帮助。 为您正在谈论的语言和 ui-framework/device 添加标签。然后专家会注意到您的问题。 【参考方案1】:

如果您指的是 UITextField 上的内置清除按钮,当用户点击它时,会导致文本字段失去焦点,因为按钮本身接收到触摸 - 这会触发第一个 -didEndEditing。然后释放清除按钮会导致它清除文本字段,当实际清除文本时调用-didEndEditing 再次触发。是的,这绝对不够理想。

【讨论】:

以上是关于UITextField 清除按钮调用 didEndEditing 两次的主要内容,如果未能解决你的问题,请参考以下文章

自定义 UITextField 清除按钮

UITextField 文本重叠清除按钮

将 UITextfield“清除”默认按钮连接到 UILabel

UITextField在开始编辑时具有“清除”按钮大小

在 UITextfield 中定位“清除按钮”

UITextField 的清除按钮在 UITableViewCell 中不起作用