我有一个简单的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只是继续尝试加载我的networkActivityIndicator旋转。
有没有办法为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] 举报,一经查实,本站将立刻删除。