如何在启用allowsLinkPreview 的情况下在同一个WKWebView 中打开3D touch 弹出页面?

How to open 3D touch pop pages in the same WKWebView when allowsLinkPreview enabled?

设置 webView.allowsLinkPreview = true 后,链接支持 3D 触摸查看和弹出功能。唯一的问题是新页面将在 Safari 中打开,而不是 webView.

根据 Apple iOS 10 为 WKWebView 引入了一个新的 API,允许您使用以下委托方法拦截 link 预览的 peek 和 pop 操作:

optional func webView(_ webView: WKWebView,  previewingViewControllerForElement elementInfo: WKPreviewElementInfo,  defaultActions previewActions: [WKPreviewActionItem]) -> UIViewController?
optional func webView(_ webView: WKWebView,  commitPreviewingViewController previewingViewController: UIViewController)

只需使用第二个委托方法在您自己的选项卡中呈现 url 或将其加载到您自己的 WKWebView 中。

来源:iOS 10 Link Preview API in WKWebView