代码之家  ›  专栏  ›  技术社区  ›  Josiah

如何正确使用webkit代理来启动和停止微调器、OS X、OBJ-C

  •  4
  • Josiah  · 技术社区  · 12 年前

    这看起来应该很简单,但我对Objective-C还是个新手。我想做的只是在加载WebView时简单地启动和停止微调器。这是一个操作系统X应用程序。我搜索的所有东西都是为了Cocoa Touch,我只使用Cocoa。在我的AppDelegate.m中,我必须使用启动和停止微调器的方法(这确实有效,我测试了它)。

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

    我还有两个webView的委托方法,它们被我重写了。

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

    基本上,我想知道如何让我的webView设置它的委托。通常我必须在.h文件中做一些事情,但我找不到任何引用来列出webKit委托的内容。如有任何帮助,我们将不胜感激。

    2 回复  |  直到 12 年前
        1
  •  9
  •   joneill    12 年前

    这个

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

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

    方法是的一部分 WebFrameLoadDelegate Protocol

    WebView 有一个 frameLoadDelegate 所有物设置在您的 WebView 实例(通过调用) [webView setFrameLoadDelegate:delegate] 哪里 delegate 是实现这两种方法的NSObject self 此处的frameLoadDelegate)。由于WebFrameLoadDelegate是一种非正式协议, 代表 应该在其.h文件中声明这两个方法,而不是添加 <WebFrameLoadDelegate> 到其类声明,就像使用正式协议一样。

        2
  •  -3
  •   Sham    12 年前

    您可以覆盖这些Web视图代理方法来启动和停止微调器。

    - (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.
    
    
     }