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 应用程序(不是其中的链接)