【问题标题】:How to call a function after UIWebView shouldStartLoadingWithRequest method call is finished?UIWebView shouldStartLoadingWithRequest 方法调用完成后如何调用函数?
【发布时间】:2013-03-19 09:15:26
【问题描述】:
iOS中UIWebViewshouldStartLoadingWithRequest方法执行完成后如何调用函数?
我不想使用performselector:afterdelay,因为在网络不足的情况下,这可能无法给出准确的结果。
【问题讨论】:
标签:
ios
uiwebview
delegates
uiwebviewdelegate
【解决方案1】:
使用webViewDidFinishLoad:这个方法是在网页视图加载完成后调用的。
- (void)webViewDidFinishLoad:(UIWebView *)webView
参数
网络视图:
Web 视图已完成加载。
可用性
在iOS 2.0 及更高版本中可用。
【解决方案2】:
使用这些方法可能对你有帮助,
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
return YES;
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
//this method will call after successful loading
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
//this method will call after getting any error while loading the web view.
}
【解决方案3】:
UIWebViewDelegate Protocol 提供了一些可以在您的情况下使用的方法。
在shouldStartLoadWithRequest 之后调用的第一个方法是webViewDidStartLoad:,正如它的名字所暗示的那样,一旦WebView 开始加载帧,就会调用它。
从你的问题来看,这似乎是最合适的方法。
在之前的答案中提供的其他选项是webViewDidFinishLoad: 和webView:didFailLoadWithError:,每次UIWebView 完成加载框架以及加载框架失败时分别调用它们。
请注意,这意味着在 UIWebView 实际完成加载之前,可能会多次调用上述所有方法,因为只要 UIWebView 即将启动、刚刚启动、已完成或已经完成,它们就会被抛出未能加载页面上的每一帧。
有关更多详细信息,请参阅UIWebViewDelegate Protocol documentation。