【问题标题】:Method decidePolicyForNavigationAction never called, WKWebView Swift从未调用过方法decisionPolicyForNavigationAction,WKWebView Swift
【发布时间】:2018-01-27 16:19:28
【问题描述】:

我正在开发一个在 Swift 中使用 WKWebView 显示网页的应用程序。我需要禁用用户选择和标注(因为网络会加载图表),但我没有找到任何使用 WKWebView 执行此操作的方法。

我正在尝试使用此代码,但不幸的是,似乎从未调用过此方法。你知道我的代码的哪一部分可能是错误的,或者我能做什么?

public func webView(webView: WKWebView, decidePolicyForNavigationAction navigationAction: WKNavigationAction, decisionHandler: (WKNavigationActionPolicy) -> Void) {
        if (navigationAction.navigationType == .linkActivated){
            decisionHandler(.allow)
        } else {
            decisionHandler(.cancel)
        }
}

这是我的完整代码:

import WebKit
import UIKit

class ViewController: UIViewController, WKNavigationDelegate, WKUIDelegate {

@IBOutlet weak var webView: WKWebView!

override func viewDidLoad() {
    super.viewDidLoad()

    let url = URL(string: "http://danfg95glucose.azurewebsites.net")
    let request = URLRequest(url: url!)

    webView.navigationDelegate = self
    self.webView.uiDelegate = self
    webView.load(request)

}

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    print("loaded")

}

func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
    if navigationAction.targetFrame == nil {
        webView.load(navigationAction.request)
    }
    return nil
}


public func webView(webView: WKWebView, decidePolicyForNavigationAction navigationAction: WKNavigationAction, decisionHandler: (WKNavigationActionPolicy) -> Void) {
    if (navigationAction.navigationType == .linkActivated){
        decisionHandler(.allow)
    } else {
        decisionHandler(.cancel)
    }
}
}

非常感谢您的回复。我正在学习 swift 编程,我有点迷茫。

【问题讨论】:

    标签: ios swift xcode webview wkwebview


    【解决方案1】:

    忘记_

    public func webView(_ webView: WKWebView, decidePolicyForNavigationAction navigationAction: WKNavigationAction, decisionHandler: (WKNavigationActionPolicy) -> Void) {
        if (navigationAction.navigationType == .linkActivated){
            decisionHandler(.allow)
        } else {
            decisionHandler(.cancel)
        }
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-10
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    相关资源
    最近更新 更多