我是 iOS 新手。 我有一个用于注册的 View Controller ,它包含三个用于电子邮件、密码、确认密码和一个 UIButton 的 UITextfields。我有一些验证,在这些验证成功后,我必须启用注册按钮。我已经通过 shouldChangeCharactersInRange 实现了它,但它会返回旧字符,例如
I type a => It returns me ""
then
I type ab => It returns a
then
I remove b => It returns me ab
实际上是:
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if ([textField.text length]>0) {
[self enableSignUpButton];
}
return YES;
}
-(void)enableSignUpButton {
if ([emailTextField.text length]>0 && [passwordTextfield.text length]>0 && [confirmPasswordTextfield.text length]>0)
signUpButton.enabled=TRUE;
return;
}
signUpButton.enabled=FALSE;
}
我认为它不是动态获取文本字段值?还是?
帮我摆脱这一切。
最佳答案
像这样处理文本更改事件
- (void)viewDidLoad
{
[super viewDidLoad];
[self.textField addTarget:self
action:@selector(textFieldDidChange:)
forControlEvents:UIControlEventEditingChanged];
}
- (void)textFieldDidChange:(UITextField *)aTextField
{
if ([textField.text length]>0)
{
[self enableSignUpButton];
} else {
// NOTE
[self disableSignupButton];
}
}
关于ios - shouldChangeCharactersInRange 返回旧结果 iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26054471/