Swift 如何在 Webview 中打开链接?

Posted

技术标签:

【中文标题】Swift 如何在 Webview 中打开链接?【英文标题】:Swift How to make links open in Webview? 【发布时间】:2017-03-08 22:04:10 【问题描述】:

我找不到解决方案。我希望你能帮助我。 我想要带有超链接的按钮以在第二个屏幕上的 webview 中打开网站。超链接在 safari 中打开,我希望它在 webview 的第二个屏幕上打开。 谢谢

【问题讨论】:

How do I add a UIWebView to my ios app?的可能重复 【参考方案1】:

您可以使用 SFSafariViewController 在您的应用程序中打开链接,这里是它的代码

首先你需要导入 SafariServices

import SafariServices

然后在按钮动作上,就可以打开SFSafariViewController

对于 swift 3.0

let svc = SFSafariViewController(url: URL(string:"http://***.com")!)
self.present(svc, animated: true, completion: nil)

【讨论】:

NSURL(string: "http://***.com")! as URL) 为什么不只是URL(string: "http://***.com")! @JAL 我对 swift 很陌生,感谢您纠正我 :) @JAL 如果你在 swift3 中编写代码,那么你可以这样写 天哪,这一定是第 3 次解决方案非常简单,但在互联网上却很难找到,因为实践和可用工具不断变化,90% 的答案已经过时!其他人说我们必须实现自己的 UIWebView【参考方案2】:

Swift 4.1 和 Swift 5。如果应用程序内有一些链接,那么它将在 safari 中打开,因此要在同一 webview 中打开链接,请执行 navigationDelegate fo WKWebView

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) 
     if navigationAction.navigationType == WKNavigationType.linkActivated 
        webView.load(navigationAction.request)
        decisionHandler(.cancel)
        return
     
     decisionHandler(.allow)

【讨论】:

以上是关于Swift 如何在 Webview 中打开链接?的主要内容,如果未能解决你的问题,请参考以下文章

XCODE swift - webview 无法打开 ics 链接 - 在 safari 中有效

swift:如何打开 Safari 应用程序(不是其中的链接)

如何使用swift为IOS推送通知打开新的WebView

从 webview 链接 Swift 启动 waze

如何从 Web 视图打开 Safari 视图控制器(swift)

Swift - 在 WebView 中禁用链接