【问题标题】:webView didFinish Navigation never gets calledwebView didFinish Navigation 永远不会被调用
【发布时间】:2018-08-03 09:53:52
【问题描述】:

我正在尝试在网页完全加载后自行删除启动画面 (back_button),我进行了大量研究,他们总是指向相同的代码作为答案。但是,我的不会被调用。有人可以告诉我我做错了什么吗?

import UIKit
import WebKit

class ViewController: UIViewController {


    @IBOutlet weak var LoadingView: UIImageView!
    var webView: WKWebView?
    var bgImage: UIImageView?
    var imageViewObject :UIImageView?

    override func viewDidLoad() {
        super.viewDidLoad()

        //var imageViewObject :UIImageView

        let screenSize: CGRect = UIScreen.main.bounds
        imageViewObject = UIImageView(frame:CGRect(x:0,y: 0, width: screenSize.width, height: screenSize.height))
        imageViewObject?.image = UIImage(named:"back_image")
        webView?.navigationDelegate = self as? WKNavigationDelegate
        self.view.addSubview(imageViewObject!)
        let myURL = URL(string: "https://www.google.com")
        let myRequest = URLRequest(url: myURL!)
        _ = webView?.load(myRequest)
    }

    override func loadView() {
        super.loadView()

        //self.view.sendSubview(toBack: imageViewObject)
        //self.view = self.LoadingView
        self.webView = WKWebView()
        self.view = self.webView

    }

    @IBAction func BackButton(_ sender: Any) {

        if(webView?.canGoBack)!
        {
            webView?.goBack();
        }
    }



    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        print("TEST")
        imageViewObject?.removeFromSuperview()
    }


     func webViewDidFinishLoad(webView: WKWebView) {
        imageViewObject?.removeFromSuperview()
        self.view = self.webView

     }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

【问题讨论】:

    标签: xcode swift4 wkwebview webviewdidfinishload


    【解决方案1】:

    你必须通过将这行代码放入 viewDidLoad 来遵守它的协议委托

    webView?.uiDelegate = self

    这样做之后,现在如果你想使用委托方法,你必须把你的 viewController 作为 UIWebViewDelegate 的子类

    class ViewController: UIViewController ,UIWebViewDelegate{
    

    【讨论】:

    • “WKWebView”类型的值没有成员“委托”是我收到的错误
    • xcode 建议我使用 webView?.navigationDelegate = self as? WKNavigationDelegate,但这也不起作用
    • 我在您的指导下修复了我的代码。谢谢,虽然你并没有完全错,但我错过了正确的代表
    【解决方案2】:

    我通过制作解决了这个问题

    webView?.naviationDelegate = self
    

    并将其添加到类中

    class ViewController: UIViewController ,WKNavigationDelegate
    

    【讨论】:

      猜你喜欢
      • 2012-10-27
      • 2013-10-12
      • 2012-03-27
      • 2013-08-29
      • 2013-11-03
      • 1970-01-01
      • 1970-01-01
      • 2015-05-06
      • 2015-10-15
      相关资源
      最近更新 更多