5

私はUIWebView正常に動作するを持っています。デリゲートは機能しています。URL を開くと、イベントshouldStartLoadWithRequestが発生webViewDidFinishLoadします。

しかし、たとえば、Google の検索結果をクリックすると、shouldStartLoadWithRequest起動されるだけで、webViewDidFinishLoad呼び出されることはありません。

「読み込み中...」インジケーターを に配置するshouldStartLoadWithRequestと、これらの場合、ページが正しく読み込まれた後でもインジケーターが残るため、これが問題を引き起こしています。

なぜこれが起こっているのですか?

4

4 に答える 4

1

.h ファイルに追加<UIWebViewDelegate>

そして.mで:

yourWebview=[[UIWebView alloc]init];
yourWebview.delegate=self;
于 2013-04-12T10:38:47.713 に答える
1

When you click on search, the navigationType is UIWebViewNavigationTypeFormSubmitted. So in this case, the return type should be YES. If it is not, webViewDidFinishLoad method is not fired.

- (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;
}
于 2013-04-12T10:46:01.460 に答える
0

Google APIの専門家ではありませんが、これがあなたの理由かもしれないと思った.

于 2013-04-12T10:53:11.813 に答える