web-dev-qa-db-ja.com

UITextField値変更イベント?

テキストフィールドの内容が変更されたときに関数が呼び出されるようにするにはどうすればよいですか?

53

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) {...}
130
kovpas

実際、UITextFieldには値変更イベントはありません。UIControlEventEditingChangedを使用してください

20

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
}
8
Pauls

Swift=これは便利です-

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

これが私の解決策です。

Swift 4

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

@objc func textFieldDidChange(sender: UITextField){
   print("textFieldDidChange is called")
}
0
wsnjy