如何在用户关闭警报视图后立即强制查看绘制自己?

时间:2010-06-02 12:35:00

标签: iphone objective-c

情况是这样的:

如果我没有互联网连接,我会向用户显示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];                 

}

2 个答案:

答案 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”,当然你必须对它们进行调整。