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

我可以添加一个小的十字button,用于清除UITextField中的所有文本,使用下面的代码。

 textField.clearButtonMode = UITextFieldViewModeWhileEditing; 

我也实现了UITextFieldDelegate

我想根据UITextField的更改激活/取消激活UINavigationBar的右侧button。 规则很简单:如果文本字段至less有一个字符,只需启用该button,否则禁用它。

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

现在我的问题是,当我点击文本字段上的小十字button,方法textField:shouldChangeCharactersInRange:不会被调用。 所以缺less必要的操作。 我如何识别清除button的点击事件?

一些图片来显示我在说什么。

初始阶段:在这里,“完成”button被禁用,因为在文本字段中没有字母

当input一个字母,“完成”button被启用

现在,如果我点击清除button,“完成”button仍然可用。 这是错误的。

使用委托方法textViewShouldClear: ::

询问委托人是否应删除文本字段的当前内容。

 - (BOOL)textFieldShouldClear:(UITextField *)textField 

参数

 textField 

包含文本的文本字段。

返回值

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

讨论

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

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

 * Available in iOS 2.0 and later. 

在UITextField.h中声明

您可以使用textFieldShouldClear:委托方法来处理用户点击清除button。