在 UIWebView 加载时显示 SVProgressHUD



我有一个UIWebView设置为ViewController中的视图。我想在网页加载时显示一个SVProgressHUD活动指示器,然后在完成后将其关闭,但我似乎无法让它工作。网页加载正常,但指示器从未显示。 我知道SVProgressHUD设置正确且功能正常,但不是在我拥有的功能中。

我相信因为我实际上在 IB 的场景中没有UIWebView,而是ViewController将视图设置为UIWebView,所以我使用的代码无法针对它。如果我错了,请纠正我。

这是我的代码:

import UIKit
import SVProgressHUD
class ViewController: UIViewController, UIWebViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()

if let url = URL(string: "https://www.google.com") {
let webView = UIWebView(frame: self.view.frame)
let urlRequest = URLRequest(url: url)
webView.loadRequest(urlRequest as URLRequest)
webView.scalesPageToFit = true;
webView.scrollView.showsHorizontalScrollIndicator = false;
webView.scrollView.showsVerticalScrollIndicator = false;
self.view.addSubview(webView)

}
}
func webViewDidStartLoad(_ webView: UIWebView) {
SVProgressHUD.show()
}
func webViewDidFinishLoad(_ webView: UIWebView) {
SVProgressHUD.dismiss()
}
func webView(_ webView: UIWebView, didFailLoadWithError error: Error) {
SVProgressHUD.dismiss()
}
}

任何帮助将不胜感激。

UIWebView

弃用,请使用WKWebView

import UIKit
import WebKit
import SVProgressHUD
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
if let url = URL(string: "https://www.google.com") {
let webView = WKWebView(frame: self.view.frame)
webView.navigationDelegate = self
self.view.addSubview(webView)
webView.load(URLRequest(url: url))
SVProgressHUD.show()
}
}
}
extension ViewController: WKNavigationDelegate {
func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {
print(error.localizedDescription)
SVProgressHUD.dismiss()
}
func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
print("Strat to load")
}
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
print("finish to load")
SVProgressHUD.dismiss()
}
}

您忘记绑定委托,因此请在下面添加此行

webview.delegate = self

注意

UIWebView已弃用,因此请使用 WKWebView

相关内容

  • 没有找到相关文章

最新更新