首页 > 解决方案 > WKWebView 在 Safari 中打开选项卡而不是在 WebView 中

问题描述

我有一个小问题。我为我的网站制作了一个 webview 应用程序。一切正常,而不是加载带有 target="_blank" 的链接。他们在 Safari 中重新加载。我希望将它们加载到 webview 中。有谁知道该怎么做?

这是我的代码

//
//  ViewController.swift
//  Street Grinders
//
//  Created by Jörg Quick on 20.11.18.
//  Copyright © 2018 FH Darmstadt. All rights reserved.
//

import UIKit
import WebKit

class ViewController: UIViewController, WKUIDelegate {

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

        //Lade Webseite https://www.street-grinders.de
        let url = URL(string: "https://www.street-grinders.de")
        let request = URLRequest(url: url!)

        //Lade Webview
        WebView.load(request)

        //Gestensteuerung aktivieren
        WebView.allowsBackForwardNavigationGestures = true

        //Lade die Seite neu wenn Push Down
        let refreshControl = UIRefreshControl()
        refreshControl.addTarget(self, action: #selector(reloadWebView(_:)), for: .valueChanged)
        WebView.scrollView.addSubview(refreshControl)

    }

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

    //Gibt Speicherwarnung
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()

    }

    //Funktion zum Seite neu laden!
    @objc func reloadWebView(_ sender: UIRefreshControl) {
        WebView.reload()
        sender.endRefreshing()

    }

}

如果有人可以发布代码而不是 func webView,那就太好了。

标签: webviewtabsloadwkwebviewnew-operator

解决方案


推荐阅读