【问题标题】:Validating textfields in ios and setting the FirstResponder验证 ios 中的文本字段并设置 FirstResponder
【发布时间】:2014-10-10 21:06:18
【问题描述】:

如何正确使用 [textfield becomeFirstResponder] 。在这里,如果三个字段为空,我想将我的第一个文本字段设置为第一响应者,如果第一个和第三个字段为空,我想将第二个文本字段设置为焦点。我怎样才能有效地做到这一点。

这是我的代码

BOOL validName = [self validateUserField:mUsername];
BOOL validEmail = [self validateEmail:mEmail];
BOOL validPhone = [self validateUserField:mPhone];

NSString *errLbl = [NSString stringWithFormat:@"Followings error occured %@",@""];
if (!validName) {
    errLbl = [errLbl stringByAppendingFormat:@"%@",@"\n* valid name required"];
    [self.uErrorLabel setText:errLbl];
}

if (!validEmail) {
    errLbl = [errLbl stringByAppendingFormat:@"%@",@"\n* valid email required"];
    [self.uErrorLabel setText:errLbl];
    [self.uEmail becomeFirstResponder];
}

if (!validPhone) {
    errLbl = [errLbl stringByAppendingFormat:@"%@",@"\n* valid phone required"];
    [self.uErrorLabel setText:errLbl];
    [self.uPhone becomeFirstResponder];
}

if (!validName || !validEmail || !validPhone ) {

    if (!validName) {
        [self.uName becomeFirstResponder];
    }
    if (!validEmail) {
        [self.uEmail becomeFirstResponder];
    }
    if (!validPhone) {
        [self.uPhone becomeFirstResponder];
    }

    if(!validName && !validEmail && !validPhone){

        if(!validName && !validEmail){
            [self.uName becomeFirstResponder];
        }
        if(!validEmail && !validPhone){
            [self.uEmail becomeFirstResponder];
        }
        if(!validName && !validPhone){
            [self.uName becomeFirstResponder];
        }
    }

    return;
}

【问题讨论】:

    标签: ios ios7 ios6


    【解决方案1】:

    您只能激活其中一个文本字段,所以我会使用一个变量来跟踪要激活哪个 -

        BOOL validName = [self validateUserField:mUsername];
        BOOL validEmail = [self validateEmail:mEmail];
        BOOL validPhone = [self validateUserField:mPhone];
    
        UITextField *activateTextField=nil;
    
        NSMutableString *errLbl = [[NSMutableString new] appendString:@"The following error(s) occurred"];
    
        if (!validName) {
            [errLbl appendString:@"\n* valid name required"];
            activateTextField=self.uName;
        }
    
        if (!validEmail) {
            [errLbl appendString:@"\n* valid email required"];
            activateTextField= activateTextField ? : self.uEmail;
        }
    
        if (!validPhone) {
            [errLbl appendString:@"\n* valid phone required"];
            activateTextField = activateTextField ? :self.uPhone;
        }
    
        if (activateTextField) {
            self.uErrorLabel.text=errLbl;
            [activateTextField becomeFirstResponder];
        }
    
    }
    

    【讨论】:

      【解决方案2】:
      bool error = false
      
      NSString *errLbl = @"The following errors occurred:";
      if (![self validateUserField:mUsername]) {
          errLbl = [errLbl stringByAppendingString:@"\n* valid name required"];
          error = true;
      }
      
      if (![self validateEmail:mEmail]) {
          errLbl = [errLbl stringByAppendingString:@"\n* valid email required"];
          error = true;
      }
      
      if (![self validateUserField:mPhone]) {
          errLbl = [errLbl stringByAppendingString:@"\n* valid phone required"];
          error = true;
      }
      
      if (error) {
          [self.uErrorLabel setText:errLbl];
      
          if (!validName) {
              [self.uName becomeFirstResponder];
          }
          else if (!validEmail) {
              [self.uEmail becomeFirstResponder];
          }
          else if (!validPhone) {
              [self.uPhone becomeFirstResponder];
          }
      }
      

      ^^^我帮你修好了

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-08
        • 2018-11-27
        相关资源
        最近更新 更多