UITextField 事件
Posted
技术标签:
【中文标题】UITextField 事件【英文标题】:UiTextField events 【发布时间】:2011-02-05 08:14:45 【问题描述】:当我在 Interface Builder 中创建 UITextField 时,我可以访问它的事件选项卡,其中包含诸如值更改、触摸取消、触摸拖动等事件。我可以为每个事件分配我自己的方法。当我使用 alloc 以编程方式创建 UITextField 时,我该怎么做?
【问题讨论】:
您好,我在Interface Builder 中创建了一个UITextField 并想注册UIControlEventValueChanged。你怎么做?您如何定义该功能? 【参考方案1】:请参阅 Apple 文档以获取 UIControl
。初始化你的textField
后,调用addTarget:action:forControlEvents:
结束编辑会话的触摸事件示例
[textField addTarget:self action:@selector(handleTouchValueChanged:) forControlEvents: UIControlEventEditingDidEnd]
【讨论】:
这个不行,需要使用UIControlEventEditingChanged【参考方案2】:您应该使用UIControlEventEditingChanged
,而不是UIControlEventValueChanged
:
[_titleTextField addTarget:self action:@selector(handleTitleValueChanged:) forControlEvents:UIControlEventEditingChanged];
【讨论】:
来自 hajikelist 的回答(属于此处作为评论而不是作为答案本身): UIControlEventEditingChanged 会在用户更改值时触发 [与键入或键入同步] 这可能会导致对您的数据处理程序例程的额外命中,如果您正在根据该事件保存值,期望它是来自用户输入的某种最终值...(您最终可能会出现意外行为,例如为每个文本字段进行多次保存。)【参考方案3】:UIControlEventEditingChanged
每当用户更改值时触发[与键入或键入同步]
这可能会对您的数据处理程序例程造成额外的命中,如果您正在保存基于该事件的值,期望它是来自用户输入的某种最终值...
【讨论】:
好点,但可能应该是其他答案之一下的评论,而不是答案本身,因为您没有指定这些答案的替代方案。以上是关于UITextField 事件的主要内容,如果未能解决你的问题,请参考以下文章
当 UITextField 的“editingDidBegin”控件事件触发时,将 UITextField 的当前值设置为一个属性
UITextField的UIControlEventValueChanged事件