webView didFinish Navigation 永远不会被调用
webView didFinish Navigation never gets called
我正在尝试让启动视图 (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.
}
}
你必须通过将这行代码放在 viewDidLoad 中来遵守它的协议委托
webView?.uiDelegate = self
这样做之后,现在如果你想使用委托方法,你必须将你的 viewController 作为 UIWebViewDelegate
的子类
class ViewController: UIViewController ,UIWebViewDelegate{
我通过
解决了这个问题
webView?.naviationDelegate = self
并将其添加到 Class
class ViewController: UIViewController ,WKNavigationDelegate
我正在尝试让启动视图 (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.
}
}
你必须通过将这行代码放在 viewDidLoad 中来遵守它的协议委托
webView?.uiDelegate = self
这样做之后,现在如果你想使用委托方法,你必须将你的 viewController 作为 UIWebViewDelegate
的子类class ViewController: UIViewController ,UIWebViewDelegate{
我通过
解决了这个问题webView?.naviationDelegate = self
并将其添加到 Class
class ViewController: UIViewController ,WKNavigationDelegate