2016-07-27 52 views
0

我正在使用一些文本字段和文本字段驗證。我在下面顯示了我的代碼,在此代碼中單擊按鈕事件和所有文本字段文本保存在Web服務器上,在此代碼驗證中僅在空白文本字段中運行。但我想糾正電子郵件地址驗證和所有文本字段字符長度固定。我試了很多次,但一些時間條件錯誤,有些時候不顯示警報視圖,有些時候不保存文本字段文本。它是如何可能的話請幫忙,謝謝如何在UITextFields中設置驗證

我的代碼

- (IBAction)submit:(id)sender { 

if(self.txname == nil || [self.txname.text isEqualToString:@""]) 
{ 
    UIAlertView *ErrorAlert = [[UIAlertView alloc] initWithTitle:@"Name"message:@"All Fields are mandatory." delegate:nil cancelButtonTitle:@"OK"otherButtonTitles:nil, nil]; 
    [ErrorAlert show]; 

} 

else if(self.txemail == nil || [self.txemail.text isEqualToString:@""]) 
{ 

    UIAlertView *ErrorAlert = [[UIAlertView alloc] initWithTitle:@"Email"message:@"All Fields are mandatory." delegate:nil cancelButtonTitle:@"OK"otherButtonTitles:nil, nil]; 
    [ErrorAlert show]; 


} 

else if(self.tx_phone == nil || [self.tx_phone.text isEqualToString:@""]) 
{ 
    UIAlertView *ErrorAlert = [[UIAlertView alloc] initWithTitle:@"Phone"message:@"All Fields are mandatory." delegate:nil cancelButtonTitle:@"OK"otherButtonTitles:nil, nil]; 
    [ErrorAlert show]; 


} 
else if(self.txcomment == nil || [self.txcomment.text isEqualToString:@""]) 
{ 
    UIAlertView *ErrorAlert = [[UIAlertView alloc] initWithTitle:@"Comment"message:@"All Fields are mandatory." delegate:nil cancelButtonTitle:@"OK"otherButtonTitles:nil, nil]; 
    [ErrorAlert show]; 


} 


else 
{ 


//Here YOUR URL 
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"MY URL"]]; 


//create the Method "GET" or "POST" 
[request setHTTPMethod:@"POST"]; 

//Pass The String to server(YOU SHOULD GIVE YOUR PARAMETERS INSTEAD OF MY PARAMETERS) 
NSString *userUpdate =[NSString stringWithFormat:@"name=%@&email=%@&phone=%@& comment=%@&",_txname.text,_txemail.text,_tx_phone.text,_txcomment.text,nil]; 



//Check The Value what we passed 
NSLog(@"the data Details is =%@", userUpdate); 

//Convert the String to Data 
NSData *data1 = [userUpdate dataUsingEncoding:NSUTF8StringEncoding]; 

//Apply the data to the body 
[request setHTTPBody:data1]; 

//Create the response and Error 
NSError *err; 
NSURLResponse *response; 

NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err]; 

NSString *resSrt = [[NSString alloc]initWithData:responseData encoding:NSASCIIStringEncoding]; 

//This is for Response 
NSLog(@"got response==%@", resSrt); 
if(resSrt) 
{ 
    NSLog(@"got response"); 

} 
else 
{ 
    NSLog(@"faield to connect"); 
} 
    { 
     UIAlertView *ErrorAlert = [[UIAlertView alloc] initWithTitle:@"Success"message:@"All Fields are mandatory." delegate:nil cancelButtonTitle:@"OK"otherButtonTitles:nil, nil]; 
     [ErrorAlert show]; 


    } 
    [self.view endEditing:YES]; 
    [email protected]""; 
    [email protected]""; 
    [email protected]""; 
    [email protected]""; 


} 
} 

回答

1

我做到了,在我的代碼,不喜歡按以下方式:

- (IBAction)submit:(id)sender { 

     if (![self isFormValid]) { 

      return; 

     } 

    NSError *error; 


    if (!error) 
    { 
     UIAlertView *signupalert = [[UIAlertView alloc]initWithTitle:@"Congratulations" message:@"Record Added Successfully" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 

     [signupalert show]; 

    } 

} 

-(BOOL)isFormValid 
{ 

    NSString *emailRegEx [email protected]"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; 

    NSPredicate *emailTest =[NSPredicate predicateWithFormat:@"SELF MATCHES %@",emailRegEx]; 



    if (txname.text && txname.text.length==0) 
    { 
     [self showErrorMessage:@"Please enter name"]; 
     return NO; 
    } 

    else if (tx_phone.text && tx_phone.text.length!=10) 
    { 
     [self showErrorMessage:@"Please enter valid phone number"]; 
     return NO; 
    } 

    else if([emailTest evaluateWithObject: txemail.text]==NO) 
    { 
     [self showErrorMessage:@"Please enter Valid Email_id"]; 
     return NO; 
    } 
    else if (txcomment.text && txcomment.text.length==0) 
    { 
     [self showErrorMessage:@"Please enter comment"]; 
     return NO; 
    } 

    return YES; 
} 

-(void)showErrorMessage:(NSString *)message 
{ 

     UIAlertView *alertmessage = [[UIAlertView alloc]initWithTitle:@"Error" message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 

     [alertmessage show]; 

    } 
+0

未聲明的標識符: - isFormValid –

+0

@Ankur更新了我的代碼中的小改動,請檢查一次..解決你的問題.. :) –

+0

它的工作。謝謝,但名稱文本字段字符長度如何設置 –

0
-(BOOL) NSStringIsValidEmail:(NSString *)checkEmail 
{ 
    BOOL stricterFilter = NO; 
    NSString *filter = @"^[A-Z0-9a-z\\._%+-][email protected]([A-Za-z0-9-]+\\.)+[A-Za-z]{2,4}$"; 
     NSString *lstring = @"^[email protected]([A-Za-z0-9-]+\\.)+[A-Za-z]{2}[A-Za-z]*$"; 
    NSString *emailRegex = stricterFilter ? stricterFilterString : laxString; 
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; 
return [emailTest evaluateWithObject:checkEmail]; 
} 
+0

其中u實現這個方法 –

+0

如何使用我的代碼 –

2

不喜歡

- (IBAction)submit:(id)sender { 

    if (![txname hasText]) { 
    [self showAlertView:@"Alert" message:@"name is empty"]; 
    } 
    else if (![txemail hasText]) 
    { 
    [self showAlertView:@"Alert" message:@"email is empty"]; 
    } 
    else if ([self isValidEmailAddress:txemail.text] == NO) 
    { 
    [self showAlertView:@"Alert" message:@"Invaildemail"]; 
    } 
    else 
    { 
    // call webservice for succes 
    } 

創建alertcontroller

- (void)showAlertView:(NSString*)title message:(NSString*)message 
{ 
UIAlertController* alertMessage = [UIAlertController 
    alertControllerWithTitle:title 
        message:message 
       preferredStyle:UIAlertControllerStyleAlert]; 

UIAlertAction* yesButton = [UIAlertAction 
    actionWithTitle:@"OK" 
       style:UIAlertActionStyleDefault 
      handler:^(UIAlertAction* action){ 
      }]; 

[alertMessage addAction:yesButton]; 

[self presentViewController:alertMessage animated:YES completion:nil]; 
} 

電子郵件驗證

- (BOOL)isValidEmailAddress:(NSString *)emailAddress 
{ 
//Create a regex string 
NSString *stricterFilterString = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}" ; 

//Create predicate with format matching your regex string 
NSPredicate *emailTest = [NSPredicatepredicateWithFormat: 
          @"SELF MATCHES %@", stricterFilterString]; 

//return true if email address is valid 
return [emailTest evaluateWithObject:emailAddress]; 
} 

更新

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
if (textField == self.txname) 
{ 
// Prevent crashing undo bug – see note below. 
if(range.length + range.location > textField.text.length) 
{ 
    return NO; 
} 

NSUInteger newLength = [textField.text length] + [string length] - range.length; 
return newLength <= 25; 
} 
return YES; 
} 
+0

@AnkurKumawat - 檢查更新後的答案 –

+0

@AnkurKumawat - 我使用'Dism的原因iss'作爲宏,但我在這裏修改爲'OK',檢查更新的答案 –

+0

@AnkurKumawat - 字符長度..? –