我已经搜索并没有找到解决方案,所以希望有人可以提供帮助。
我有一个 UIWebView ,当用户按下按钮时会调用它。一切都很好,除非您考虑手机没有数据连接时的行为。
第一次尝试在手机处于飞行模式或没有数据连接的情况下打开 UIWebView 时:
- UIWebView 开始加载
- 加载失败
一旦分配了 UIWebView 并且第一次加载失败,点击链接到 IBAction(调用 [webView reload])的刷新按钮会导致:
- 不管手机在初始加载失败后是否有数据连接,都会调用刷新IBAction,但是我的NSLogs告诉我既没有调用webViewDidStartLoad、webViewDidFinishLoad,也没有调用webView…didFailLoadWithError。
如果我让应用程序运行并打开与设备的数据连接(例如关闭飞行模式),然后返回我的应用程序并点击刷新按钮,[webView reload] 被调用,但 webViewDidStartLoad(因此 webViewDidFinishLoad)是不叫。
以下是相关代码:
调出 webView:
-(IBAction)loadWebView {
webView = [[UIWebView alloc] init];
webView.scalesPageToFit = YES;
[webView setDelegate:self];
NSString *urlAddress = @"http://google.com";
NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[webView loadRequest:requestObj];
}
重新加载:
-(IBAction)reloadWebView{
[webView reload];
NSLog(@"RELOAD");
}
webViewDidStart、DidFinish、didFailLoadWithError:
- (void)webViewDidStartLoad:(UIWebView *)webView
{
NSLog(@"START LOAD");
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSLog(@"FINISH LOAD");
}
- (void)webView:(UIWebView *) webView didFailLoadWithError:(NSError *)error
{
NSLog(@"DID FAIL");
}
想法?