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

时间:2016-01-11 03:59:14

标签: ios uiwebview wkwebview 3dtouch

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

2 个答案:

答案 0 :(得分:1)

根据Apple iOS 10,为WKWebView引入了一个新的API,允许您使用以下委托方法拦截链接预览的查看和弹出操作:

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

只需使用第二个委托方法在您自己的标签中显示网址或将其加载到您自己的WKWebView中。

来源:iOS 10 Link Preview API in WKWebView

答案 1 :(得分:0)

您可能需要SFSafariViewController而不是wkwebview。这里有一些来自developer.apple.com的信息

  

如果您想在iOS中支持链接预览,但又希望将用户保留在应用程序中,则可以从使用WKWebView类切换到SFSafariViewController类。如果您将Web视图用作应用内浏览器,则进行此更改是最佳做法。 Safari视图控制器类自动支持链接预览。

此处链接到文档:

https://developer.apple.com/reference/webkit/wkwebview/1415000-allowslinkpreview https://developer.apple.com/reference/safariservices/sfsafariviewcontroller