4

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

textField.clearButtonMode = UITextFieldViewModeWhileEditing;

我也实现了UITextFieldDelegate

我想UINavigationBar根据我的UITextField. 规则很简单:如果文本字段至少有一个字符,则启用按钮,否则禁用它。

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

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

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

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

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

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

4

2 回答 2

8

使用委托方法textViewShouldClear:

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

- (BOOL)textFieldShouldClear:(UITextField *)textField

参数

textField

包含文本的文本字段。

返回值

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

讨论

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

委托执行此方法是可选的。如果它不存在,则清除文本,就好像此方法已返回 一样YES。可用性

* Available in iOS 2.0 and later.

在 UITextField.h 中声明

于 2011-09-05T06:01:37.713 回答
5

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

于 2011-09-05T06:00:36.193 回答