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

问题描述 投票:0回答:3

我可以添加一个小十字按钮,用于通过以下代码在

UITextField
中单击一次清除所有文本。

textField.clearButtonMode = UITextFieldViewModeWhileEditing;

我也实现了

UITextFieldDelegate

我想根据我的

UINavigationBar
的变化来激活/停用
UITextField
的右栏按钮。规则很简单:如果文本字段至少有一个字符,则只需启用该按钮,否则禁用它。

我实现了

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

现在我的问题是,当我单击文本字段上的小十字按钮时,不会调用方法

textField:shouldChangeCharactersInRange:
。因此缺少所需的操作。如何识别清除按钮的点击事件?

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

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

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

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

ios cocoa-touch uitextfield uitextfielddelegate
3个回答
8
投票

使用委托方法

textViewShouldClear:
:

询问代表文本字段的当前内容是否应为 已删除。

- (BOOL)textFieldShouldClear:(UITextField *)textField

参数

textField

包含文本的文本字段。

返回值

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

讨论

文本字段调用此方法以响应用户按下 内置清除按钮。 (此按钮默认不显示,但可以 通过更改

clearButtonMode
属性中的值来启用 文本字段。)当编辑开始并且 文本字段的
clearsOnBeginEditing
属性设置为
YES

委托实现此方法是可选的。如果是的话 不存在,文本将被清除,就像此方法已返回

YES
一样。 可用性

* Available in iOS 2.0 and later.

声明于 UITextField.h


5
投票

您可以使用

textFieldShouldClear:
委托方法来处理用户点击清除按钮时的情况。


0
投票

斯威夫特

func textFieldShouldClear(_ textField: UITextField) -> Bool {

     // Here you can add code to handle custom actions when the clear button is pressed
    
     return true
}
© www.soinside.com 2019 - 2024. All rights reserved.