0

私はかなり基本的なものが欠けていると思いますが、とにかくそれを危険にさらします:)。forループを使用して、さまざまなhtmlをにロードしていUIWebViewます。HTMLの読み込みが完了したら、関係のないことを実行して次に進みます。何らかの理由webViewDidFinishLoadで、htmlArrayに20個のオブジェクトがあり、方法を見つけようとしている場合でも、forループのプロセスの最後に1回だけ呼び出されます。

それを解決するための創造的な方法はありますか?

ありがとう

    for(int i=0;i<[_htmlArray count];i++)
        {
            msg = [_htmlArray objectAtIndex:i];
            [_tempWebView loadHTMLString:msg baseURL:nil];
        }
}

..。

- (void)webViewDidFinishLoad:(UIWebView *)webView {

    [self doSomeStuff:webView]; // <--only called once

    NSLog(@"didFinish Snip Snap: %@; stillLoading:%@", [[webView request]URL],
          (webView.loading?@"NO":@"YES"));
}
4

3 に答える 3

5

何が起こっているのかというと、何loadHTMLString:baseURL:度も電話をかけることで、あなたが求めていることを上書きしているだけだUIWebViewと思います。したがって、最後の1つが勝ち、代理人は1回だけ呼び出されます。

もちろんUIWebView、別のスレッドで非同期にオフになってロードするように作成することもできますが(実際にはそうです)、それでも、forループで非常に高速に実行しているため、前のロードがキャンセルされてから、ロードすると、最後の1つだけが勝ちます。

于 2013-03-09T16:05:21.493 に答える
0

複数のロードをほぼ同時に呼び出す場合webViewDidFinishLoad:、最後のロードが完了するまで、は呼び出されない可能性があります。また、最後の1つだけがロードを開始する可能性もあります。

于 2013-03-09T16:06:25.910 に答える
0

forループは、ビューの読み込みが完了するのを待ってから再度読み込みを開始するため、実際には最後の呼び出しのみが終了して呼び出しを行う可能性がありますwebViewDidFinishLoad

と呼ばれるインスタンス変数をcount作成し、の最初のページをロードしますviewDidLoad。インクリメントではwebViewDidFinishLoad、インスタンス変数。20にcount達すると、完了です。

このようにして、次のページが呼び出される前に各ページが読み込まれます。

于 2013-03-09T16:06:44.413 に答える