我知道这可能会被视为重复,但我向您保证不是。
大家都给出了类似这样的答案:
if ([_confirm.text isEqualToString: _password.text] || resultantLength2 < 3) {
textField.textColor = [UIColor redColor];
[_next setEnabled:NO];
}else{
[_next setEnabled:YES];
}
}
那么为什么这不起作用呢?
- (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField == _confirm || textField == _password) {
int resultantLength2 = textField.text.length + string.length - range.length;
NSLog(@"Length After Additions And Subtractions Will Be: %i letters", resultantLength2);
if ([_confirm.text isEqualToString: _password.text] || resultantLength2 < 3) {
textField.textColor = [UIColor redColor];
[_next setEnabled:NO];
}else{
[_next setEnabled:YES];
}
}
return YES;
}
我有一个禁用的下一个按钮
最佳答案
我们真正想要做的是在文本更改之后比较文本字段中的字符串,但目前,我们使用的是在文本更改之前触发的方法,并询问更改是否正常。
我们可以在这个方法中做一些技巧来让它正常工作,但是为什么不在值改变后检查它们呢?
在 View Controller 的 viewDidLoad
,添加这两行:
[_confirm addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
[_password addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
现在添加
textFieldDidChange:
方法来比较文本字段中的值。- (void)textFieldDidChange:(UITextField *)textField {
if (![_confirm.text isEqualToString: _password.text]) {
textField.textColor = [UIColor redColor];
[_next setEnabled:NO];
} else {
[_next setEnabled:YES];
}
}
关于ios - 如何检查两个文本字段是否相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22949025/