ios - 当我单击 WKWebView 浏览器中的链接时,它会转到 safari

标签 ios swift

我如何让我的 WKWebview 浏览器在同一浏览器中打开链接,目前,如果我单击链接,它不会执行任何操作,只允许我在 Safari 中打开它。我怎样才能解决这个问题,以便当单击链接时它会在同一个 WkWebView 浏览器中打开?

import UIKit
import WebKit

class ViewController: UIViewController, WKNavigationDelegate {

    @IBOutlet weak var webView: WKWebView!

    //Web View
    override func viewDidLoad() {
        super.viewDidLoad()

        let url = URL(string: "http://tweetdeck.twitter.com/")
        let request = URLRequest(url: url!)

        webView.load(request)
        webView.navigationDelegate = self

    }

最佳答案

请使用 WKNavigationDelegate 的decidePolicyFor方法尝试此代码

extension ViewController: WKNavigationDelegate {
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
    if navigationAction.navigationType == .linkActivated {
        guard let url = navigationAction.request.url else {
            decisionHandler(.allow)
            return
        }

        let components = URLComponents(url: url, resolvingAgainstBaseURL: false)
        if components?.scheme == "http" || components?.scheme == "https"
        {
            UIApplication.shared.open(url)
            decisionHandler(.cancel)
        } else {
            decisionHandler(.allow)
        }
    } else {
        decisionHandler(.allow)
    }
}}

关于ios - 当我单击 WKWebView 浏览器中的链接时,它会转到 safari,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59223198/

相关文章:

ios - UICollectionViewCell 以固有大小展开/折叠

ios - Swift:使用字典将 alamofire 中的 JSON 数据解析为数组时出错

arrays - Swift 过滤对象数组与另一个对象数组

swift - 如何让 Sprite 在点击时改变方向?

ios - 扩展、选择器并通过扩展添加 subview

ios - 无法推送 View Controller

android - 使用信用卡通过 Android/iOS 应用程序转账

ios - UITextView attributedText 不更新字体和/或字体大小

ios - 按住按钮即可使用 AVFoundation、Swift 3 录制视频

ios - Swift Metal Compute Shaders 提供意想不到的混合结果