在uialertview中验证文本字段

时间:2012-06-22 12:36:13

标签: ios xcode validation textfield alertview

我以UIAlertView样式显示UIAlertViewStylePlainTextInput。然后我尝试验证这样的空字段:

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

但即使textfield不为空,它也会在日志中显示错误消息。

3 个答案:

答案 0 :(得分:2)

这是因为您的if语句包含

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

表示如果有文字,则NSLog(@"error"); 你的if应该是:

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

答案 2 :(得分:1)

首先你有你的NSLog(@“错误”);在代码区域中,如果textfield长度超过0,则为true。这似乎与你想要的相反!!!

试试这个:

-(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语句中你可能不需要大于零的长度,但是如果你在某种程度上期待不可见的字符,那么保留它就可以了!