ios - shouldChangeCharactersInRange 返回旧结果 iOS

标签 ios objective-c uitextfield

我是 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/

相关文章:

objective-c - Ipad Split View,是否可以调整 Split View的根 Controller 的大小?

ios - 关闭模态视图 Controller 偶尔会卡住应用程序,swift 3

objective-c - iOS 5 Storyboard : Classes For Each Scene

swift - 如何在 Swift 中通过 ImageView 创建自定义文本字段

ios - 如何在 UITextField 中添加图像和文本作为 swift 居中的占位符

Swift Scroll to UITextField via UiscrollView only acts first time 错误

objective-c - 为什么我真的需要使用协议(protocol)

ios - 什么队列应该委托(delegate)代码运行

objective-c - 进入uitextview,UITextView,ios中的第二行

ios - drawAtPoint 不会在 View 中渲染文本