WebKitのデリゲートを正しく使用してスピナー、OS X、OBJ-Cを開始および停止する方法

StackOverflow https://stackoverflow.com//questions/12679890

  •  12-12-2019
  •  | 
  •  

質問

このようなようですが、このようなシンプルなので、客観的なものではかなり新しいです。私がやりたいことは、WebViewがロードされている間だけスピナーを起動してスピナーを停止します。これはOS Xアプリです。私が検索したことはすべてCocoa Touchのためのものです、私はちょうどココアを使っています。My AppDelegate.Mでは、スピナーを起動して停止するメソッドが必要です(これは機能します、私はそれをテストしました)。

-(IBAction)goSpin:(id)sender
{
    [spinner startAnimation:self];
}

-(IBAction)stopSpin:(id)sender
{
    [spinner stopAnimation:self];
}
.

I WebViewには2つのデリゲートメソッドがあります。

-(void)webView:(WebView *)sender didStartProvisionalLoadForFrame:(WebFrame *)frame
{
    [self goSpin:self];
}

-(void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
{
    [self stopSpin:self];
}
.

基本的に、私はそれを代表者に設定するために私のWebViewを手に入れる方法を知りたいです。通常は.hファイルで何かをしなければなりませんが、WebKitの委任がこれに取り組むものであることをリストする参照は見つかりません。どんな助けにも感謝されるでしょう。

役に立ちましたか?

解決

-(void)webView:(WebView *)sender didStartProvisionalLoadForFrame:(WebFrame *)frame
.

-(void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
.

メソッドは WebFrameLoadDelegateプロトコル

webview frameLoadDelegateプロパティを持ちます。WebViewを呼び出して、[webView setFrameLoadDelegate:delegate]を呼び出します。ここで、delegateは2つのメソッドを実装するNSObjectである(ここでは、FrameLoadDelegateを作成するのが最も簡単になる)。WebFrameLoadDelegateは非公式のプロトコルであるため、selfは、正式なプロトコルと同様に、そのクラス宣言にadd delegateを追加するのではなく、その2つのメソッドを宣言する必要があります。

他のヒント

これらのWebViewの委任メソッドを上書きしてスピナーを起動して停止できます。

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

// In this method you have to start a spinner.

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

   // In this method you have to stop the current  spinner.


}
 - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{

      // In this method you have to stop the current  spinner.


 }
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top