情况是这样的:
如果我没有互联网连接,我会向用户显示UIAlertView。 当用户按“再试一次”时,我称之为“做某事”。
问题是UIAlertView仍会显示几秒钟。用户点击“再试一次”
我尝试过:
[self.view setNeedsDisplay];
但是,它不起作用,甚至在文件中,如果说刷新将是 只有当代码控制将返回系统时,这不是这种情况。
提前感谢。
///////////////////////////////////
if(somecondition)
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message:@"NO INTERNET CONNECTION"
delegate:self cancelButtonTitle:nil otherButtonTitles:@"Try Again", nil];
[alert show];
[alert release];
return;
}
- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
// the user clicked one of the OK/Cancel buttons
[self DoSomthing];
}
答案 0 :(得分:0)
如果你在警报的回调中做了一些冗长的过程,它将不会隐藏,直到该回调返回。
换句话说,你的doSomething方法不应该直接尝试重新连接到互联网,而只是让异步调用产生它。
编辑: 您可以使用以下代码行延迟/分离doSomething的执行:
[self performSelector:@selector(doSomething) withObject:nil afterDelay:0];
答案 1 :(得分:0)
我使用此方法来检测警报何时被解除,我添加了一行代码来隐藏它并生成一个新的URLrequest,如果这就是你需要的。
-(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
alert.hidden=YES;
[webnews loadRequest:[NSURLRequest requestWithURL:home]];
}
请求使用我的UIWebView“webnews”和NSURL“home”,当然你必须对它们进行调整。