如何使用wkwebview打开指向PDF的链接

Mon*_*ndy 5 ios wkwebview swift4

我创建了一个简单的iOS应用程序,它使用WKWebView打开URL。在网站的网站上,有指向PDF文档的链接。在浏览器中打开网站时,可以单击链接,然后打开PDF文档。但是,当我单击链接时,进入我的应用程序并没有任何反应。我该如何解决?我是否必须在info.plist中添加一些内容?

感谢帮助。

Abh*_*tra 6

SWIFT 3. *和4. * *

首先,您必须将该pdf文件下载到您的应用中,下载后必须获取该文件路径,然后该文件路径应按照的方式使用WKWebView

let fileURL = URL(fileURLWithPath: filePathURLData as! String)
//print(fileURL)
webView.loadFileURL(fileURL, allowingReadAccessTo: fileURL)
Run Code Online (Sandbox Code Playgroud)

filePathURLData是您已下载到应用程序中的实际文件路径,您必须将其转换为URL,然后需要将该文件加载到WKWebView

谢谢

希望这会帮助你。

这将显示WKWebView(doc,docx,xl​​sx,pdf,google doc,页面和任何文本文件中的任何文件)

  • 进入该网站,有不止一个指向pdf文档的链接,我不知道使用了哪些链接。 (2认同)
  • 您有一个想法,如何使用标准浏览器打开链接? (2认同)

dir*_*bag 6

您可能在锚标记中使用了 target="_blank"。这将打开一个新窗口来显示链接。WKWebView 阻止您尝试打开新窗口(至少默认情况下)。

下面的代码仍然不会创建新窗口,而是在当前 WKWebView 中打开 PDF 等链接。另一个选项似乎是创建一个新的 WKWebView 并返回它,因此 ios 并打开其中的链接,但我不希望每次点击 WKWebView 内的网站时都会创建额外的视图。

在你的 ViewController.viewDidLoad 中

webView.uiDelegate = self
Run Code Online (Sandbox Code Playgroud)

然后为委托添加扩展名

extension ViewController: WKUIDelegate {

    /**
     * Force all popup windows to remain in the current WKWebView.  
     * By default, WKWebView is blocking new windows from being created
     * ex <a href="link" target="_blank">text</a>.
     * This code catches those popup windows and displays them in the current WKWebView.
     */
    func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {

        // open in current view
        webView.load(navigationAction.request)

        // don't return a new view to build a popup into (the default behavior).
        return nil;
    }
}
Run Code Online (Sandbox Code Playgroud)