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

发布于 2024-12-03 02:38:11 字数 838 浏览 0 评论 0原文

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

textField.clearButtonMode = UITextFieldViewModeWhileEditing;

我还实现了 UITextFieldDelegate。

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

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

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

一些图片来展示我正在谈论的内容。

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

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

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

I can add a small cross button that is used to clear all the text in a single click in a UITextField with the following code.

textField.clearButtonMode = UITextFieldViewModeWhileEditing;

I also implemented UITextFieldDelegate.

I want to activate/deactivate the right bar button of the UINavigationBar according to the changes in my UITextField. The rule is simple: if the text field has at least one character, just enable the button, else disable it.

I implemented the UITextField's delegate method textField:shouldChangeCharactersInRange: to constantly check the requirement and update the status of the button.

Now my problem is, when I click the small cross button on the text field, the method textField:shouldChangeCharactersInRange: is not called. So the required action is missing. How can I identify the hit event of the clear button?

Some pictures to show what I'm talking about.

Initial stage: here, the "Done" button is disabled because there are no letters in the text field

When typing a letter, the "Done" button is enabled

Now, if I click on the clear button, the "Done" button is still enabled. This is wrong.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

ま昔日黯然 2024-12-10 02:38:11

使用 委托方法 textViewShouldClear:

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

- (BOOL)textFieldShouldClear:(UITextField *)textField

参数

文本字段

包含文本的文本字段。

返回值

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

讨论

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

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

* 适​​用于 iOS 2.0 及更高版本。

声明于
UITextField.h

Use the delegate method textViewShouldClear::

Asks the delegate if the text field’s current contents should be
removed.

- (BOOL)textFieldShouldClear:(UITextField *)textField

Parameters

textField

The text field containing the text.

Return Value

YES if the text field’s contents should be cleared; otherwise, NO.

Discussion

The text field calls this method in response to the user pressing the
built-in clear button. (This button is not shown by default but can be
enabled by changing the value in the clearButtonMode property of the
text field.) This method is also called when editing begins and the
clearsOnBeginEditing property of the text field is set to YES.

Implementation of this method by the delegate is optional. If it is
not present, the text is cleared as if this method had returned YES.
Availability

* Available in iOS 2.0 and later.

Declared In
UITextField.h

暗喜 2024-12-10 02:38:11

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

You can use textFieldShouldClear: delegate method to handle when user taps on clear button.

冧九 2024-12-10 02:38:11

斯威夫特

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

     // Here you can add code to handle custom actions when the clear button is pressed
    
     return true
}

Swift

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

     // Here you can add code to handle custom actions when the clear button is pressed
    
     return true
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文