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];
}

相关文章

在有效期内的苹果开发者账号(类型为个人或者公司账号)。还...
Appuploader官网--IOS ipa上传发布工具,证书制作工具跨平台...
苹果在9月13号凌晨(北京时间)发布 iOS 16,该系统的设备可...
计算机图形学--OpenGL递归实现光线追踪
Xcode 14打出来的包在低版本系统运行时会崩溃,报错信息是Li...