xcode 从未调用方法decidePolicyForNavigationAction,WKWebView Swift

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/48477794/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-15 10:31:49  来源:igfitidea点击:

Method decidePolicyForNavigationAction never called, WKWebView Swift

iosswiftxcodewebviewwkwebview

提问by Daniel Fernandez

I am developing an app who shows a web page using WKWebView in Swift. I need to disable the user selection and the callout (because the web loads a graph) and I don't find any way to do this with WKWebView.

我正在开发一个在 Swift 中使用 WKWebView 显示网页的应用程序。我需要禁用用户选择和标注(因为网络加载了一个图表)并且我没有找到任何方法来使用 WKWebView 来做到这一点。

I am trying with this code but unfortunately it seems that this method is never called. Do you know in which part of my code may be the fault or what can I do?

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

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

This is my full code:

这是我的完整代码:

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)
    }
}
}

Thank you so much for your responses. I am learning swift programming and I am a bit lost.

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

回答by Sh_Khan

forget _

忘记 _

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