按下 UITextField 的小十字按钮时的动作

Posted

技术标签:

【中文标题】按下 UITextField 的小十字按钮时的动作【英文标题】:Action when the small cross button of UITextField is pressed 【发布时间】:2011-09-05 05:56:24 【问题描述】:

我可以使用以下代码在UITextField 中添加一个小十字按钮,用于通过单击清除所有文本。

textField.clearButtonMode = UITextFieldViewModeWhileEditing;

我也实现了UITextFieldDelegate

我想根据我的UITextField中的变化来激活/停用UINavigationBar的右栏按钮。规则很简单:如果文本字段至少有一个字符,则启用按钮,否则禁用它。

我实现了UITextField 的委托方法textField:shouldChangeCharactersInRange: 来不断检查需求并更新按钮的状态。

现在我的问题是,当我单击文本字段上的小十字按钮时,没有调用方法textField:shouldChangeCharactersInRange:。因此缺少所需的操作。如何识别清除按钮的点击事件?

一些图片来说明我在说什么。

初始阶段:此处,“完成”按钮被禁用,因为文本字段中没有字母

输入字母时,“完成”按钮被启用

现在,如果我单击清除按钮,“完成”按钮仍处于启用状态。这是错误的。

【问题讨论】:

请试试这个解决方案 - ***.com/a/60147293/10579134 【参考方案1】:

使用delegate method textViewShouldClear:

询问代理文本字段的当前内容是否应该是 删除。

- (BOOL)textFieldShouldClear:(UITextField *)textField

参数

textField

包含文本的文本字段。

返回值

YES 是否应该清除文本字段的内容;否则,NO

讨论

文本字段调用此方法以响应用户按下 内置清除按钮。 (此按钮默认不显示,但可以 通过更改 clearButtonMode 属性中的值启用 文本字段。)在开始编辑时也会调用此方法,并且 文本字段的clearsOnBeginEditing 属性设置为YES

委托执行此方法是可选的。如果是 不存在,文本被清除,就好像这个方法返回了YES。 可用性

* Available in ios 2.0 and later.

声明于 UITextField.h

【讨论】:

试试这个方法:***.com/a/60147293/10579134【参考方案2】:

当用户点击清除按钮时,您可以使用textFieldShouldClear:委托方法来处理。

【讨论】:

以上是关于按下 UITextField 的小十字按钮时的动作的主要内容,如果未能解决你的问题,请参考以下文章

按下返回按钮时在 UITextField 之间切换

UIKit框架(18)UIButton和UITextField

按下按钮和文本字段切换后 UITextField 失去焦点(键盘保持可见)

按下它时为 UITextfield 设置操作

按下按钮后 UIAlert 验证中的 Swift3 UITextField

每次新迭代时的 UITextField 输入