[英]ios - UIWebView DidFinishLoad not being called
我有一個工作正常的UIWebView
。 代表正在工作。 當我打開URL時,事件webViewDidFinishLoad
是shouldStartLoadWithRequest
和webViewDidFinishLoad
被觸發。
但是,例如,當我點擊Google搜索結果時,只會shouldStartLoadWithRequest
,並且永遠不會調用webViewDidFinishLoad
。
這會導致問題,因為如果我在shouldStartLoadWithRequest
上放置一個“loading ...”指示符,在這些情況下,指針在頁面正確加載后仍然保持不變。
知道為什么會這樣嗎?
在.h文件中添加<UIWebViewDelegate>
在.m:
yourWebview=[[UIWebView alloc]init];
yourWebview.delegate=self;
單擊搜索時,navigationType為UIWebViewNavigationTypeFormSubmitted。 所以在這種情況下,返回類型應為YES。 如果不是,則不會觸發webViewDidFinishLoad方法。
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSLog(@"shouldStartLoadWithRequest");
if ( navigationType == UIWebViewNavigationTypeLinkClicked ){
NSLog(@"UIWebViewNavigationTypeLinkClicked");
return YES;
}
if (navigationType ==UIWebViewNavigationTypeFormSubmitted ) {
NSLog(@"UIWebViewNavigationTypeFormSubmitted");
return YES;
}
if (navigationType ==UIWebViewNavigationTypeBackForward) {
NSLog(@"UIWebViewNavigationTypeBackForward");
return YES;
}
if (navigationType ==UIWebViewNavigationTypeFormResubmitted) {
NSLog(@"UIWebViewNavigationTypeFormResubmitted");
return YES;
}
if (navigationType ==UIWebViewNavigationTypeReload) {
NSLog(@"UIWebViewNavigationTypeReload");
return YES;
}
return YES;
}
這個問題通常可以在ipad應用程序中找到....但你可以通過使用[self performselector:afterdelay]來解決你的問題,你必須使用[m_pWebview loaded]檢查webview是否加載了選擇器方法; 並根據那個執行指示器停止....這不是正確的解決方案,但它的工作原理.......
不是Google API專家,但我懷疑這可能是您的理由 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.