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 事件处理

UITextField的UIControlEventValueChanged事件

UITextField的UIControlEventValueChanged事件

UITextField 是不是消耗触摸事件?

UITextField valueDidChange-事件