wkwebview - WKWebView 在 Safari 中打开链接
问题描述
我正在使用 WKWebView 在我的应用程序中显示帮助页面。我有几个链接,点击时大部分都在 Safari 中打开。但它们都在我的应用程序中打开(在 WKWebView 内)。
这就是我所拥有的:
import WebKit
class FAQAnswerViewController: UIViewController, WKUIDelegate {
@IBOutlet weak var webView: WKWebView!
var answer = ""
var style = "style.css"
override func viewDidLoad() {
super.viewDidLoad()
webView.uiDelegate = self
webView.backgroundColor = UIColor.mainColorInverse
webView.scrollView.backgroundColor = UIColor.mainColorInverse
webView.isOpaque = false
webView.scrollView.bounces = false
}
override func viewWillLayoutSubviews() {
if #available(iOS 13, *) {
let mode = traitCollection.userInterfaceStyle
if mode == .dark {
style = "style-dark.css"
}
}
answer = String(format: answer, style)
let path = Bundle.main.bundlePath
let url = URL(fileURLWithPath: path)
webView.loadHTMLString(answer, baseURL: url
}
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
if navigationAction.navigationType == .linkActivated {
decisionHandler(.cancel)
guard let url = navigationAction.request.url else {
decisionHandler(.allow)
return
}
UIApplication.shared.open(url)
decisionHandler(.cancel)
}
}
}
解决方案
推荐阅读
- angular - 在 Angular 中使用 ngIf 但我得到 Bindings cannot contain assignments
- rust - Piston 应用程序在几分钟后因内存分配错误而崩溃
- python - Selenium:通过存在_of_element_located() 聚合Selenium
- python - 尝试读取 xpt 文件时,如何修复 Python 中的“str”对象没有属性“tell”错误?
- android - (Android) 使用搜索和默认书签打开 Google 地图?
- python - Python:按条件绘制多个正/负条形图
- python - Python - 未定义变量名称
- javascript - 事件处理程序的状态更新
- flutter - iOS 模拟器在 Flutter 中无法工作或花费太多时间
- angular - Angular 2+ 中 *ngIf 与 [ngSwitch] 的区别