2010-10-23 60 views

回答

120
[myTextField addTarget:self 
       action:@selector(textFieldDidChange:) 
     forControlEvents:UIControlEventEditingChanged]; 
+18

奇怪的,基于UIControlEventDidEnd&UIControlEventDidBegin,人们会认为这是UIControlEventValueChanged ......究竟做UIControlEventValueChanged怎么办呢? – Jarrod 2012-02-22 00:01:02

19

其实,有没有价值改变事件UITextField,使用UIControlEventEditingChanged

+0

我以为我会在这里发布它给新人看 – 2013-01-26 23:30:17

8

我决心改变shouldChangeChractersInRange的行为问题。如果您返回NO,则这些更改不会由iOS内部应用,而是您有机会手动更改并在更改后执行任何操作。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    //Replace the string manually in the textbox 
    textField.text = [textField.text stringByReplacingCharactersInRange:range withString:string]; 
    //perform any logic here now that you are sure the textbox text has changed 
    [self didChangeTextInTextField:textField]; 
    return NO; //this make iOS not to perform any action 
} 
+2

请注意,设置文本属性将光标移动到文本的末尾,这可能会影响编辑 – jarnoh 2014-03-04 18:43:42

+0

如果用户点击退格,这将无法正常工作。 – Harris 2016-07-15 18:15:51

1

为SWIFT这个来得心应手 -

textField.addTarget(self, action: #selector(onTextChange), forControlEvents: UIControlEvents.EditingChanged)