Dav*_*id 7 javascript iphone iframe
在我的应用程序中,我需要一种方法来判断我的webview何时完成加载.如果内容是html,那么很容易做到这一点.但是,我的内容源是javascript与iFrame里面,它会导致多次调用UIWebView finishedLoad方法.无论如何我可以查看iframe是否已完成加载?
我发现的唯一万无一失的方法是听三个说它即将开始加载的方法,并且它完成加载(加上等于"失败"),并手动维护每个方法的计数.
即:像:
int outstandingRequests;
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
outstandingRequests++;
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
outstandingRequests--;
if( outstandingRequests < 1 )
viewLoadingPleaseWait.hidden = TRUE;
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
outstandingRequests--;
}
Run Code Online (Sandbox Code Playgroud)
我通常也不得不覆盖didFail方法 - Apple错误地使用它来报告,例如YouTube播放器已经接管了YouTube视频的处理.这不是一个失败,它是一个"页面由不同的应用程序加载".
例如
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
outstandingRequests--;
if( [error code] == NSURLErrorCancelled )
{
NSLog(@"[%@] ...webView CANCELLED loading", [self class] );
}
else if( [[error domain] isEqualToString:@"WebKitErrorDomain"]
&& [error code] == 204)
{
// no worries ... YouTube, iCal, or etc took over the page load
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3120 次 |
| 最近记录: |