我可以添加一个小十字按钮,用于通过以下代码在
UITextField
中单击一次清除所有文本。
textField.clearButtonMode = UITextFieldViewModeWhileEditing;
我也实现了
UITextFieldDelegate
。
我想根据我的
UINavigationBar
的变化来激活/停用UITextField
的右栏按钮。规则很简单:如果文本字段至少有一个字符,则只需启用该按钮,否则禁用它。
我实现了
UITextField
的委托方法textField:shouldChangeCharactersInRange:
来不断检查需求并更新按钮的状态。
现在我的问题是,当我单击文本字段上的小十字按钮时,不会调用方法
textField:shouldChangeCharactersInRange:
。因此缺少所需的操作。如何识别清除按钮的点击事件?
一些图片来展示我在说什么。
初始阶段:此处,“完成”按钮被禁用,因为文本字段中没有字母
输入字母时,“完成”按钮启用
现在,如果我单击清除按钮,“完成”按钮仍处于启用状态。这是错误的。
使用委托方法
textViewShouldClear:
:
询问代表文本字段的当前内容是否应为 已删除。
- (BOOL)textFieldShouldClear:(UITextField *)textField
参数
textField
包含文本的文本字段。
返回值
如果应清除文本字段的内容;否则,YES
。NO
讨论
文本字段调用此方法以响应用户按下 内置清除按钮。 (此按钮默认不显示,但可以 通过更改
属性中的值来启用 文本字段。)当编辑开始并且 文本字段的clearButtonMode
属性设置为clearsOnBeginEditing
。YES
委托实现此方法是可选的。如果是的话 不存在,文本将被清除,就像此方法已返回
一样。 可用性YES
* Available in iOS 2.0 and later.
声明于 UITextField.h
您可以使用
textFieldShouldClear:
委托方法来处理用户点击清除按钮时的情况。
斯威夫特
func textFieldShouldClear(_ textField: UITextField) -> Bool {
// Here you can add code to handle custom actions when the clear button is pressed
return true
}