我可以使用以下代码添加一个小的十字按钮,用于在UITextField
中单击清除所有文本。
textField.clearButtonMode = UITextFieldViewModeWhileEditing;
我还实施了UITextFieldDelegate
。
我想根据UINavigationBar
中的更改激活/停用UITextField
的右侧栏按钮。规则很简单:如果文本字段至少有一个字符,只需启用该按钮,否则禁用它。
我实施了UITextField
的委托方法textField:shouldChangeCharactersInRange:
来不断检查需求并更新按钮的状态。
现在我的问题是,当我单击文本字段上的小十字按钮时,不会调用方法textField:shouldChangeCharactersInRange:
。因此缺少必要的操作。如何识别清除按钮的命中事件?
一些图片展示了我在说什么。
初始阶段:此处,“完成”按钮被禁用,因为文本字段中没有字母
键入字母时,启用“完成”按钮
现在,如果我点击清除按钮,仍然会启用“完成”按钮。这是错误的。
答案 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:
委托方法来处理用户点击清除按钮的时间。