2010-04-07 46 views
12

当我在界面生成器中创建UITextField时,我可以访问事件选项卡,它具有值更改,触摸取消,触摸拖动等事件。我可以将自己的方法分配给每个事件。当我用alloc以编程方式创建UITextField时,我该怎么做?UiTextField事件

+0

嗨,我已经在Interface Builder中创建了一个UITextField,并且想要注册UIControlEventValueChanged。你如何去做呢?你如何定义该功能? – Namratha 2011-02-11 07:04:51

回答

14

请参阅Apple文档UIControl。初始化你textField后,调用addTarget:action:forControlEvents:

例如结束编辑会话

[textField addTarget:self action:@selector(handleTouchValueChanged:) forControlEvents: UIControlEventEditingDidEnd] 
+0

谢谢,工作 – Mike 2010-04-07 19:37:45

+9

这不起作用,你需要使用hajikelist的答案UIControlEventEditingChanged – 2012-01-27 00:28:27

11

代替UIControlEventValueChanged触摸事件,你应该使用UIControlEventEditingChanged

[_titleTextField addTarget:self action:@selector(handleTitleValueChanged:) forControlEvents:UIControlEventEditingChanged]; 
+1

(属于这里作为一个评论,而不是一个答案本身):UIControlEventEditingChanged随着用户改变值[与键入或键入同步]触发如果您基于该事件保存值,并希望它是来自用户输入的某种最终值,则会给数据处理程序例程带来额外的命中......(最终会出现意想不到的行为,比如每次都有多次保存textfield。) – GeneralMike 2012-10-31 20:07:22

3

UIControlEventEditingChanged时将触发用户更改值与打字或键盘同步] 这可能会导致额外的命中您的数据处理程序,如果您正在保存基于该事件的值,期望它是用户输入的某种终值...

+1

一个很好的观点,但应该是其他答案之一而不是答案本身的评论,因为你没有指定这些答案的替代方案。 – GeneralMike 2012-10-31 20:04:50