ios - 为什么 webViewDidStartLoad 没有调用?

标签 ios swift

在 Xcode8 中使用 swift

下面是我的view controller.swift

import UIKit
import WebKit

class ViewController: UIViewController, WKNavigationDelegate {
    var XWebview: WKWebView!
    var activity = UIActivityIndicatorView(activityIndicatorStyle: .whiteLarge)

    override func loadView() {
        super.loadView()
        self.XWebview = WKWebView()
        self.XWebview.navigationDelegate = self
        self.view = self.XWebview
    }

    override func viewDidLoad() {
        XWebview.navigationDelegate = self
        activity.center = self.view.center
        activity.color = UIColor.gray
        XWebview.addSubview(activity)

        super.viewDidLoad()

        let XURL = NSURL(string: "http://www.yahoo.com")


        let XURLRequest = NSURLRequest(url: XURL! as URL)
        XWebview.load(XURLRequest as URLRequest)
    }

    override var prefersStatusBarHidden: Bool {
        return true
    }

    func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
        activity.startAnimating()
    }

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        activity.stopAnimating()
    }
}

加载网页 View 时我没有看到任何指示器? 我做错了什么吗?

最佳答案

您正在使用 WKWebView 并实现了 UIWebView 委托(delegate)。它不会触发。您必须实现 WKWebView 协议(protocol)方法。

执行以下WKNavigationDelegate 协议(protocol)方法来识别开始加载 View 。这将在主框架导航开始时触发。

func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!)

确保您的事件指示器颜色与WKWebView 背景颜色不同。变灰

使用主队列显示/隐藏事件指示器。

 DispatchQueue.main.async {
    activity.startAnimating()
 }

 DispatchQueue.main.async {
    activity.stopAnimating()
 }

如果您的 Web View 是白色,请使用 grey 颜色作为事件指示器。

var activity = UIActivityIndicatorView(activityIndicatorStyle: .gray)

关于ios - 为什么 webViewDidStartLoad 没有调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45050282/

相关文章:

ios - 如何在 Swift 3 中将 SKSpriteNode 合并到 SKTexture 中以形成新的 SKSpriteNode?

ios - 如何让一个按钮在 iOS 中创建一个对象?

ios - 不支持的 URL Swift 5

ios - 自定义控件超出 Stackview 单元格的范围

ios - 无法快速调用 findObjectsInBackgroundWithBlock 错误

ios - 如何在 textview 中输入后关闭 tableView 中的键盘

ios - iOS 有类似 AXML 的东西吗?

ios - UITableViewCell EditingStyle Delete时如何自定义删除按钮?

javascript - Vue SPA 中的视频无法在 iPhone 上自动播放/加载

ios - UILabel 垂直对齐