簡體   English   中英

ios - UIWebView DidFinishLoad未被調用

[英]ios - UIWebView DidFinishLoad not being called

我有一個工作正常的UIWebView 代表正在工作。 當我打開URL時,事件webViewDidFinishLoadshouldStartLoadWithRequestwebViewDidFinishLoad被觸發。

但是,例如,當我點擊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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM