gpt4 book ai didi

safari - WKWebView 目标 ="_blank"链接在 safari ios11、swift 4 中打开新标签

转载 作者:行者123 更新时间:2023-12-03 16:55:01 34 4
gpt4 key购买 nike

我知道这个问题已经被问了很多,我想我已经查看了每一篇关于这个的帖子,但我仍然无法让它发挥作用。我是 swift 的新手,我认为这阻碍了我从其他答案中调整代码片段。

所以这是我的问题:

我正在使用 WKWebView 在我的应用程序中查看网站。当我单击打开新选项卡的链接时,什么也没有发生。我希望在 safari 中或至少在新的 wkwebview 中打开该新选项卡。我尝试从以下位置实现此答案:https://stackoverflow.com/a/27391215 , 和 Open a WKWebview target="_blank" link in Safari和许多其他类似的答案,但没有取得任何进展。我需要做什么才能在 swift 4 中完成这项工作?

目前我只有这个,因为我无法实现我成功找到的任何其他解决方案:

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

但它似乎没有任何作用。如果有人能帮助我指明正确的方向,我将不胜感激。

最佳答案

我粘贴了一些 的示例代码WKWebView 项目(从文件夹加载本地 html)需要具有 target=_blank 的链接在新的浏览器窗口中打开。

我已经强调了正确打开链接所必须具备的 3 件事。

  • class ViewController extends WKUIDelegate
  • self.webView.uiDelegate = self
  • 使用 UIApplication.shared.open而不是 webView.load

  • 让我知道它有效,如果有人可以对下面的示例代码提出改进建议,那也会对我有帮助:)

    的完整示例代码Xcode 9.2,Swift 4 以下。

    祝你好运
    import UIKit
    import WebKit

    class ViewController: UIViewController, WKNavigationDelegate, WKUIDelegate {

    @IBOutlet weak var webView: WKWebView!
    override func viewDidLoad() {
    super.viewDidLoad()
    self.webView.uiDelegate = self

    let htmlPath = Bundle.main.path(forResource: "index", ofType: "html", inDirectory: "www")
    let htmlUrl = URL(fileURLWithPath: htmlPath!)
    let htmlDir = Bundle.main.url(forResource: "www", withExtension: nil)
    webView.loadFileURL(htmlUrl, allowingReadAccessTo: htmlDir!)
    }

    func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
    if navigationAction.targetFrame == nil {
    //webView.load(navigationAction.request)
    UIApplication.shared.open(navigationAction.request.url!, options: [:])
    }
    return nil
    }

    override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    }

    override var prefersStatusBarHidden: Bool {
    return true
    }

    }

    关于safari - WKWebView 目标 ="_blank"链接在 safari ios11、swift 4 中打开新标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48073805/

    34 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com