微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

xcode – iOS App – 设置UIWebView加载超时

我有一个简单的iOS本机应用程序加载一个UIWebView。如果应用程序不完全在20秒内完成在WebView中加载初始页面,我希望webView显示错误消息。

我加载我的视图中的webView的URLDidLoad像这样(简化):

[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.example.com"] cachePolicy:NSURLCacheStorageAllowed timeoutInterval:20.0]];

上面的代码中的timeoutInterval实际上并不“做”任何事情,因为苹果已经在操作系统中设置了240秒,实际上没有超时。

我有我的webView didFailLoadWithError操作设置,但如果用户一个网络连接,这从来没有被调用。 webView只是继续尝试加载我的networkActivityIndi​​cator旋转。

有没有办法为webView设置超时?

解决方法

timeoutInterval用于连接。一旦webview连接到URL,您将需要启动NSTimer并执行自己的超时处理。就像是:

// define NSTimer *timer; somewhere in your class

- (void)cancelWeb
{
    NSLog(@"didn't finish loading within 20 sec");
    // do anything error
}

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    [timer invalidate];
}

- (void)webViewDidStartLoad:(UIWebView *)webView
{
    // webView connected
    timer = [NSTimer scheduledTimerWithTimeInterval:20.0 target:self selector:@selector(cancelWeb) userInfo:nil repeats:NO];
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐