3

UIAlertViewUIAlertViewStylePlainTextInput风格展示。然后我尝试验证这样的空字段:

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

但即使文本字段不为空,它也会在日志中显示一条错误消息。

4

3 回答 3

2

这是因为您的if声明包含

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

这意味着如果有文本,那么NSLog(@"error"); 您的 if 应该是:

if ((![alertView textFieldAtIndex:0].text) || [[alertView textFieldAtIndex:0].text isEqual:@""])
{
      NSLog("error");
}
于 2012-06-22T12:38:44.663 回答
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");
        }
    }
}
于 2012-06-22T12:39:05.550 回答
1

首先你有你的 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 语句中,您可能不需要大于零的长度,但是如果您以某种方式期待不可见的字符,那么保留它可能是可以的!!!

于 2012-06-22T12:40:13.160 回答