Значение события UITextField изменилось? - PullRequest
53 голосов
/ 24 октября 2010

Как сделать так, чтобы при изменении содержимого текстового поля вызывалась функция?

Ответы [ 5 ]

128 голосов
/ 24 октября 2010

Objective-C

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

Swift 4

myTextField.addTarget(self, action: #selector(textFieldDidChange(sender:)), for: .editingChanged)

@objc func textFieldDidChange(sender: UITextField) {...}
20 голосов
/ 26 января 2013

На самом деле, нет события изменения значения для UITextField, используйте UIControlEventEditingChanged

8 голосов
/ 11 ноября 2013

Я решил проблему с изменением поведения shouldChangeChractersInRange.Если вы вернете НЕТ, изменения не будут применены 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
}
1 голос
/ 19 июля 2016

Для быстрого это пригодится -

textField.addTarget(self, action: #selector(onTextChange), forControlEvents: UIControlEvents.EditingChanged)
0 голосов
/ 27 июля 2018

это мое решение.

Swift 4

textField.addTarget(self, action: #selector(self.textFieldDidChange(sender:)), for: .editingChanged)

@objc func textFieldDidChange(sender: UITextField){
   print("textFieldDidChange is called")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...