按下 UITextField 的小十字按钮时的动作
Posted
技术标签:
【中文标题】按下 UITextField 的小十字按钮时的动作【英文标题】:Action when the small cross button of UITextField is pressed 【发布时间】:2011-09-05 05:56:24 【问题描述】:我可以使用以下代码在UITextField
中添加一个小十字按钮,用于通过单击清除所有文本。
textField.clearButtonMode = UITextFieldViewModeWhileEditing;
我也实现了UITextFieldDelegate
。
我想根据我的UITextField
中的变化来激活/停用UINavigationBar
的右栏按钮。规则很简单:如果文本字段至少有一个字符,则启用按钮,否则禁用它。
我实现了UITextField
的委托方法textField:shouldChangeCharactersInRange:
来不断检查需求并更新按钮的状态。
现在我的问题是,当我单击文本字段上的小十字按钮时,没有调用方法textField:shouldChangeCharactersInRange:
。因此缺少所需的操作。如何识别清除按钮的点击事件?
一些图片来说明我在说什么。
初始阶段:此处,“完成”按钮被禁用,因为文本字段中没有字母
输入字母时,“完成”按钮被启用
现在,如果我单击清除按钮,“完成”按钮仍处于启用状态。这是错误的。
【问题讨论】:
请试试这个解决方案 - ***.com/a/60147293/10579134 【参考方案1】:使用delegate method textViewShouldClear:
:
询问代理文本字段的当前内容是否应该是 删除。
- (BOOL)textFieldShouldClear:(UITextField *)textField
参数
textField
包含文本的文本字段。
返回值
YES
是否应该清除文本字段的内容;否则,NO
。讨论
文本字段调用此方法以响应用户按下 内置清除按钮。 (此按钮默认不显示,但可以 通过更改
clearButtonMode
属性中的值启用 文本字段。)在开始编辑时也会调用此方法,并且 文本字段的clearsOnBeginEditing
属性设置为YES
。委托执行此方法是可选的。如果是 不存在,文本被清除,就好像这个方法返回了
YES
。 可用性* Available in ios 2.0 and later.
声明于 UITextField.h
【讨论】:
试试这个方法:***.com/a/60147293/10579134【参考方案2】:当用户点击清除按钮时,您可以使用textFieldShouldClear:
委托方法来处理。
【讨论】:
以上是关于按下 UITextField 的小十字按钮时的动作的主要内容,如果未能解决你的问题,请参考以下文章
UIKit框架(18)UIButton和UITextField
按下按钮和文本字段切换后 UITextField 失去焦点(键盘保持可见)