如何实时检查文本字段input?

我正在为我的文本字段进行validation,我发现了一些有趣的事情,即是否可以实时检查我在文本字段中input了多less个数字。 我的文本字段input必须是8位数字。 所以我想在文字区域内的文字变为绿色时,我达到8位数字,改变颜色,当它不是。

我怎样才能做到这一点? 请帮助我,提前感谢。

使用-textField:shouldChangeCharactersInRange:replacementString:可能是一个不好的解决scheme,因为它在文本字段更新之前触发。 在键盘自动更新文本字段之前,可能需要使用此方法。 在这里,您可能只想在编辑值更改时使用目标 – 操作配对:

 [textField addTarget:self action:@selector(checkTextField:) forControlEvents:UIControlEventEditingChanged]; 

然后,在- (void)checkTextField:(id)sender ,试试这个:

 UITextField *textField = (UITextField *)sender; if ([textField.text length] == 8) { textField.textColor = [UIColor greenColor]; // No cargo-culting please, this color is very ugly... } else { textField.textColor = [UIColor blackColor]; /* Must be done in case the user deletes a key after adding 8 digits, or adds a ninth digit */ } 
 -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSString * searchStr = [textField.text stringByReplacingCharactersInRange:range withString:string]; // [textField2 setText:[textField1.text stringByReplacingCharactersInRange:range withString:string]]; NSLog(@"%@",searchStr); return YES; } 

使用UITextFieldDelegate 。 特别是这个function

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 

你可以从这里获得示例代码链接..

 [textField addTarget:self action:@selector(checkTextField) forControlEvents:UIControlEventEditingChanged]; 

尝试一下!

UITextField设置一个委托并实现该方法– textField:shouldChangeCharactersInRange:replacementString:详细信息和示例在UITextFieldDelegate协议参考中 ,但这里有一个简单的例子:

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSString *text = [textField text]; // NOT BACKSPACE if ([string length] || text.length + string.length < 8) { return YES; } else if (text.length + string.length > 8) { return NO; } else { // DO SOMETHING FOR LENGTH == 8 return YES; } } 

更新Swift 4.0

  txtFieldAdd.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged) 

现在调用你的函数。 在我的情况下,这将启用保存button

 @objc func textFieldDidChange(_ textField: UITextField) { if (txtFieldAdd.text?.isEmpty)! { btnSave.isEnabled = false } else { btnSave.isEnabled = true } } 

希望能帮助到你。