加载Webview时显示图像

问题描述 投票:0回答:2

我正在尝试在加载WKWebView时显示图像(徽标)。

因此,查看其他帖子,我会在ViewDidLoad()的屏幕上放置一个图像,并在didFinish方法中隐藏图像。但是,由于某种原因,didFinish方法不起作用。它没有打印完成(虽然webview确实显示在屏幕上)。为此,我也已经查看了其他帖子。但是,这些主要建议设置WKWebView的委托(我做过)。这是我的代码:

import UIKit
import Foundation
import WebKit

class ViewController: UIViewController, WKUIDelegate {

    var webView: WKWebView!

    override func loadView() {
        let webConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: webConfiguration)
        webView.uiDelegate = self
        view = webView
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.


        let myURL = URL(string:"https://www.mijnmedicijn.nl/")
        let myRequest = URLRequest(url: myURL!)
        webView.load(myRequest)
    }

    func webView(_ webView: WKWebView,
                          didFinish navigation: WKNavigation!){
        print("Webview did finish load")

    }

    func webView(_ webView: WKWebView,
                 didStart navigation: WKNavigation!){
        print("Webview did start laoding")

    }
}

我究竟做错了什么?为什么didFinish没有工作?如何在加载时使其工作并显示图像?

ios swift wkwebview
2个回答
1
投票

您需要添加导航的委托

webView.navigationDelegate = self

class ViewController: UIViewController , WKUIDelegate , WKNavigationDelegate {

0
投票

首先,optional func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)是在WKNavigationDelegate中声明的方法,因此你的类必须符合协议WKNavigationDelegate,你的代码必须看起来像webView.navigationDelegate = self

其次,对于你在评论中的另一个问题“为什么它会在我的手机上加载webview后几秒钟打印语句?”

当webview大型机导航完成时调用optional func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!),即WKWebView完全加载整个页面。

显示/隐藏加载图像的理想实现方式是,

  1. 符合WKNavigationDelegate。
  2. 实现optional func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!)并编写代码以在此函数中显示加载图像。一旦WKWebView启动大型机导航,就会调用此函数。
  3. 实现optional func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!)并编写代码以隐藏此函数中的加载图像。一旦内容开始到达WKWebView,就会调用此函数。
  4. 还要实现optional func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error)并编写代码来隐藏此函数中的加载图像。应该实现此功能只是在案例URL加载失败。
© www.soinside.com 2019 - 2024. All rights reserved.