UIWebView(iPhone)がURLの読み込みを完了したときにイベントを開始することは可能ですか?
UIWebViewの現在のURLを確認するにはどうすればよいですか?
はい、可能です。プロトコルを使用UIWebViewDelegate
して、デリゲートに次のメソッドを実装します。
- (void)webViewDidFinishLoad:(UIWebView *)webView
URL が必要な場合は、プロパティを使用して最後のリクエストを取得できますrequest
。
webView.request.URL
見つかった解決策はどれもうまくいきませんでした。
次に、Google/StackOverflow で見つけた他のソリューションよりも少なくともはるかにうまく機能するこの例を見つけました。
非常に簡単な方法:
ステップ 1:UIWebViewDelegate
ヘッダー ファイルにデリゲートを設定します。
ステップ 2:次のメソッドを追加webViewDidFinishLoad
して、現在の URL を取得しますwebview
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSLog(@"Current URL = %@",webView.request.URL);
//-- Add further custom actions if needed
}
「URLの取得」部分に対するPascalの回答は問題ありません。
でも!
AppleのUIWebViewDelegateのドキュメントから:「webViewDidFinishLoad:Webビューがフレームのロードを終了した後に送信されます。」
フレーム != ページ。
webViewDidFinishLoad は、ページの「読み込みが完了」したときに呼び出されます。それまでに何度も呼び出すこともできます。Amazon.com からのページ読み込みにより、webViewDidFinishLoad への多数の呼び出しが生成される可能性があります。
ページ ソースを制御する場合は、負荷テストを行うことができ、その場合は機能します。「ページの読み込みが完了した後」に呼び出されることのみを気にする場合は、webViewDidFinishLoad で十分です。
任意の JavaScript を使用した任意のページの場合、広告バナーを永続的にロードしたり、バナーを自動スクロールしたり、ビデオ ゲームを実装したりすると、ページの「ロードが完了した」という考えそのものが間違っています。