2010-10-23 68 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)