WebView の WebViewDidFinishLoad デリゲート メソッドを使用していますが、呼び出されていません。アプリケーションを実行し、WebView でリクエストをロードするたびに。メソッドの呼び出し方法と、ファイル所有者に接続する必要があるデリゲートを教えてください。
どんな助けでも大歓迎です。前もって感謝します。
WebView の WebViewDidFinishLoad デリゲート メソッドを使用していますが、呼び出されていません。アプリケーションを実行し、WebView でリクエストをロードするたびに。メソッドの呼び出し方法と、ファイル所有者に接続する必要があるデリゲートを教えてください。
どんな助けでも大歓迎です。前もって感謝します。
別の回答に対するコメントで次のように述べました。
- (void)webViewDidFinishLoad:(WebView *)webView{ NSLog(@"hello");}
このメソッドは呼び出されていません。
そんな方法はないですから。
WebView と UIWebView は同じものではありません。前者は Mac の WebKit フレームワークにあります。後者は iOS の UIKit フレームワークにあります。WebView は iOS では使用できず、UIWebView は Mac では使用できません。
UIWebView は、WebView の非常に簡素化されたバージョンです。特に、UIWebView にはデリゲート プロトコルが 1 つしかなくwebViewDidFinishLoad:
、そのうちの 1 つはそのメソッドの 1 つですが、WebView には6 つ以上のデリゲート プロトコルがあります。
webViewDidFinishLoad:
iOS アプリの UIKit フレームワークの UIWebViewDelegate プロトコルにのみ存在します。これを Mac アプリケーションに実装しても、何も呼び出されないため、何も達成されません。
メソッドの呼び出し方を教えてください…</p>
それを実装することの全体的なポイントは、ロードがいつ終了したかを見つけることであるため、それはあなたにとって何の役にも立ちません。自分で呼び出すには、いつ呼び出すか (つまり、ロードが終了したとき)を知る必要があります。それを知るには、ロードが WebKit によって終了したことを知らされる必要があります。これは、彼らが論理的に言うように、疑問を投げかけています.
正しい解決策は、正しいデリゲート プロトコルに準拠し、正しいメソッドを実装するオブジェクトに正しいデリゲートを設定することです。正しいデリゲートは、WebView のフレーム ロード デリゲートです。したがって、正しいプロトコルはWebViewFrameLoadDelegate プロトコルです。フレーム ロード デリゲートが実装する必要があるプロトコル内の正しいメソッドは、webView:didFinishLoadForFrame:
methodです。
同じ問題 (呼び出されない) を持つ Cocoa Touch プログラマーはwebViewDidFinishLoad:
、UIWebView のデリゲートが正しいオブジェクトに設定されていることを確認する必要があります。コードで設定している場合は、正しい Web ビューと対話していることを確認してください。つまり、Web ビューへのアウトレットが接続されていること (ペン先またはストーリーボードにある場合)、ペン先またはストーリーボード(1つにある場合)、および別のWebビュー(ペン先からのもの、コードで作成されたもの、またはその逆)でアウトレットの値を壊していないこと。
追加してみてください(そして、myUIWebView
をUIWebViewアウトレット名に置き換えてください):
[myUIWebView setDelegate:self];
そして、ヘッダー ファイルに を追加<UIWebViewDelegate>
して、次のメソッドを使用できるようにします。
-(void)webViewDidStartLoad:(UIWebView *)webView {
}
-(void)webViewDidFinishLoad:(UIWebView *)webView{
}
ファイル所有者を持つ webview の最初にバインドされた ResourceDelegate
(void)webView:(WebView *)sender resource:(id)identifier didFinishLoadingFromDataSource:(WebDataSource *)dataSource
これは私にとって完璧に機能します。