我很難讓 WKWebview 呼叫它的委托方法,即確實完成了一個。
我正在嘗試類似于這篇文章的內容,使用加載到 WKWebView 中的 html 生成 pdf 報告;
WKWebView 不呼叫導航委托方法
但是在那里嘗試建議,這對我不起作用。我在一個單獨的類中創建了一個 WKWebView 到將呼叫其方法的 View 控制器。
如果我直接洗掉內容并嘗試簡單地在 WebView 中加載網站以查看委托函式是否被呼叫,我將一無所獲。
這是我的測驗課;
import UIKit
import WebKit
class TestWebview: NSObject {
let webView = WKWebView ()
func loadWebsite () {
print ("LOAD TEST CALLED")
webView.navigationDelegate = self
let link = URL(string: "https://www.apple.com")!
let request = URLRequest(url: link)
webView.load(request)
}
}
extension TestWebview: WKNavigationDelegate {
func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {
print ("DID COMMIT")
}
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
print ("FINISHED LOADING")
}
}
這是我在單獨的視圖控制器中呼叫它的方式;
override func viewDidLoad() {
super.viewDidLoad()
let test = TestWebview ()
test.loadWebsite()
}
盡管如果我使用 Storyboards 將 WKWebView 作為插座放入視圖控制器中,那么委托方法確實會被呼叫。但是,我試圖避免這種情況,因為我不想在視圖控制器中看到 Web 視圖,并且希望將所有代碼單獨保存在另一個類中。
我錯過了什么嗎?檢查 Stack Overflow 上關于此的各種其他帖子并沒有給我任何解決方案,除了確保導航委托被設定,我就是。任何幫助將不勝感激。
uj5u.com熱心網友回復:
你需要移動let test = TestWebview ()到類級別,否則這個物件將在viewDidLoad完成時被驅逐:navigationDelegate被定義為weak,所以它也不會阻止它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/386666.html
標籤:迅速 网页浏览 wknavigationdelegate
