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

时间:2011-09-05 05:56:25

标签: ios cocoa-touch uitextfield uitextfielddelegate

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

textField.clearButtonMode = UITextFieldViewModeWhileEditing;

我还实施了UITextFieldDelegate

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

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

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

一些图片展示了我在说什么。

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

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

现在,如果我点击清除按钮,仍然会启用“完成”按钮。这是错误的。

2 个答案:

答案 0 :(得分:7)

使用delegate method textViewShouldClear:

  

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

- (BOOL)textFieldShouldClear:(UITextField *)textField
     

参数

textField
     

包含文字的文字字段。

     

返回值

     

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

     

讨论

     

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

     

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

* Available in iOS 2.0 and later.

宣布进入 UITextField.h

答案 1 :(得分:4)

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