2014-10-10 34 views
-1

如何正確使用[textfield becomeFirstResponder]。在這裏,如果三個字段是空的,我想將我的第一個文本字段設置爲第一響應者,並且如果第一個和第三個字段爲空,則要設置第二個文本字段爲焦點。我怎樣才能以有效的方式做到這一點。在ios中驗證textfields並設置FirstResponder

這裏是我的代碼

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; 
} 

回答

0
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]; 
    } 
} 

^^^我爲你修好了

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]; 
    } 

}