2011-09-05 136 views
2

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

textField.clearButtonMode = UITextFieldViewModeWhileEditing; 

我还实施UITextFieldDelegate

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

我实现了UITextField的代理方法textField:shouldChangeCharactersInRange:,以不断检查需求并更新按钮的状态。

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

一些照片显示我在说什么。

初始阶段:在这里,“完成”按钮是无效的,因为有在文本字段

当键入一个字母,“完成”按钮启用

没有字母

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

回答

7

使用delegate method textViewShouldClear::如果文本字段的当前内容应该被删除

询问委托。

- (BOOL)textFieldShouldClear:(UITextField *)textField 

参数

textField 

包含文本的文本字段。

返回值

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

讨论

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

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

* Available in iOS 2.0 and later. 

宣布 UITextField.h

3

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

+0

谢谢..它的工作原理 – Confused