我以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不为空,它也会在日志中显示错误消息。
答案 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语句中你可能不需要大于零的长度,但是如果你在某种程度上期待不可见的字符,那么保留它就可以了!