【问题标题】:What is the method for WebView finish loading?WebView 完成加载的方法是什么?
【发布时间】:2023-03-10 04:13:01
【问题描述】:

我需要像 - (void)applicationDidFinishLaunching:(NSNotification *)aNotification 这样的方法,但我的 WebView IBOutlet WebView*webView; 需要它。什么是正确的方法?

【问题讨论】:

    标签: objective-c macos webview launching


    【解决方案1】:

    WebView 有几个不同的选项,因为大约有 5 个非正式委托,您可以实现以下方法:

    例如,您可能希望实现框架加载和资源加载委托来监控加载进度并显示状态消息。使用多个窗口的应用程序可能希望实现用户界面委托。有关详细信息,请参阅各个非正式委托协议:WebFrameLoadDelegate 协议参考、WebPolicyDelegate 协议参考、WebResourceLoadDelegate 协议参考和 WebUIDelegate 协议参考。

    我发现 WebFrameLoadDelegate 是最简单的,只需将自己设置为委托:

    [webView setFrameLoadDelegate:self];
    

    然后实现这个方法:

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

    来源:https://developer.apple.com/library/mac/documentation/Cocoa/Reference/WebKit/Classes/WebView_Class/Reference/Reference.html

    【讨论】:

      【解决方案2】:
      - (void)webViewDidFinishLoad:(UIWebView *)webView
      

      它在UIWebViewDelegate 协议中。

      【讨论】:

      • 哦,这适用于 OS X 吗?那么它就相当于WebFrameLoadDelegate中的webView:didFinishLoadForFrame:
      【解决方案3】:

      webview 与文件所有者的第一个绑定 ResourceDelegate

      (void)webView:(WebView *)sender resource:(id)identifier didFinishLoadingFromDataSource:(WebDataSource *)dataSource
      

      这对我来说非常有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-11
        • 2014-03-19
        • 2020-04-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多