gpt4 book ai didi

ios - 为什么 webViewDidStartLoad 没有调用?

转载 作者:行者123 更新时间:2023-11-28 12:20:23 26 4
gpt4 key购买 nike

在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com