39

UIWebView(iPhone)がURLの読み込みを完了したときにイベントを開始することは可能ですか?

UIWebViewの現在のURLを確認するにはどうすればよいですか?

4

4 に答える 4

76

はい、可能です。プロトコルを使用UIWebViewDelegateして、デリゲートに次のメソッドを実装します。

- (void)webViewDidFinishLoad:(UIWebView *)webView

URL が必要な場合は、プロパティを使用して最後のリクエストを取得できますrequest

webView.request.URL
于 2009-11-02T17:30:00.500 に答える
2

見つかった解決策はどれもうまくいきませんでした。

次に、Google/StackOverflow で見つけた他のソリューションよりも少なくともはるかにうまく機能するこの例を見つけました。

uiwebview-load-completion-トラッカー

于 2014-09-02T09:22:54.277 に答える
1

非常に簡単な方法:

ステップ 1:UIWebViewDelegateヘッダー ファイルにデリゲートを設定します。

ステップ 2:次のメソッドを追加webViewDidFinishLoadして、現在の URL を取得しますwebview

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSLog(@"Current URL = %@",webView.request.URL);

    //-- Add further custom actions if needed 
}
于 2014-04-17T05:40:36.190 に答える
1

「URLの取得」部分に対するPascalの回答は問題ありません。

でも!

AppleのUIWebViewDelegateのドキュメントから:「webViewDidFinishLoad:Webビューがフレームのロードを終了した後に送信されます。」

フレーム != ページ。

webViewDidFinishLoad は、ページの「読み込みが完了」したときに呼び出されます。それまでに何度も呼び出すこともできます。Amazon.com からのページ読み込みにより、webViewDidFinishLoad への多数の呼び出しが生成される可能性があります。

ページ ソースを制御する場合は、負荷テストを行うことができ、その場合は機能します。「ページの読み込みが完了した後」に呼び出されることのみを気にする場合は、webViewDidFinishLoad で十分です。

任意の JavaScript を使用した任意のページの場合、広告バナーを永続的にロードしたり、バナーを自動スクロールしたり、ビデオ ゲームを実装したりすると、ページの「ロードが完了した」という考えそのものが間違っています。

于 2016-07-14T14:37:10.853 に答える