2012-06-22 60 views
3

我使用UIAlertViewStylePlainTextInput樣式顯示UIAlertView樣式。然後我嘗試驗證的空場是這樣的:uialertview中的textfield驗證

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ 

    if (buttonIndex == 1) { 
     if ([[alertView textFieldAtIndex:0].text length] > 0 || 
      [alertView textFieldAtIndex:0].text != nil || 
      [[alertView textFieldAtIndex:0].text isEqual:@""] == FALSE) 
     { 
      NSLog(@"error"); 
     } 
     else 
     { 
      [self postToServer]; 
     } 
    } else { 
     //close alertview 
    } 
} 

但它爲我的錯誤消息日誌即使文本字段不爲空。

+1

修改此語句[alertView textFieldAtIndex:0] .text length]> 0 as [alertView textFieldAtIndex:0] .text length] == 0 – Sumanth

回答

2

這是因爲你的if語句包含

[[alertView textFieldAtIndex:0].text length] > 0 

這意味着如果有文本,然後NSLog(@"error"); 你是否應該爲:

if ((![alertView textFieldAtIndex:0].text) || [[alertView textFieldAtIndex:0].text isEqual:@""]) 
{ 
     NSLog("error"); 
} 
+1

謝謝!只是我的注意力不集中...... –

2

您可以使用以下

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ 

    if (buttonIndex == 1) { 
     NSString *text = [alertView textFieldAtIndex:0].text; 

     if([text isEqualToString:@""]) 
     { 
      NSLog(@"empty"); 
     } 
     else { 
      NSLog(@"Not empty"); 
     } 
    } 
} 
+0

謝謝奧馬爾!)) –

+0

歡迎:) –

1

Fi首先你有你的NSLog(@「error」);在代碼的區域中,如果文本字段的長度大於0,那麼這將是真的。這與你想要的相反!

試試這個:

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ 
    if (buttonIndex == 1){ 
     if ([[alertView textFieldAtIndex:0].text length] > 0 ||     
      [[alertView textFieldAtIndex:0].text isEqual:@""] == FALSE){ 
      [self postToServer]; 
     }else{ 
      NSLog(@"error"); 
     } 
    }else{ 
     //close alertview 
    } 
} 

你可能不if語句在此需要的長度大於零,但如果你有某種期待不可見的字符,比它可能是確定以保持它!