Ios 在Swift中通过WebView下载.pdf或.ppt

Ios 在Swift中通过WebView下载.pdf或.ppt,ios,swift,xcode,webview,Ios,Swift,Xcode,Webview,我正在使用“webview”组件访问该网站。在网站的未确定部分,我们有.pdf和.ppt格式的文件。 当用户单击这些文件时,我可以下载它们吗?今天,该应用程序只打开.pdf和.ppt,但我想下载它 我的代码是pt_BR class PortalAcademicoViewController: UIViewController { @IBOutlet weak var webView: UIWebView! override func viewDidLoad() {

我正在使用“webview”组件访问该网站。在网站的未确定部分,我们有.pdf和.ppt格式的文件。 当用户单击这些文件时,我可以下载它们吗?今天,该应用程序只打开.pdf和.ppt,但我想下载它

我的代码是pt_BR

class PortalAcademicoViewController: UIViewController {


    @IBOutlet weak var webView: UIWebView!

    override func viewDidLoad() {
        super.viewDidLoad()

        carregaSite()

    }


    func carregaSite(){
        /*
        let url = URL(string: "")
        var urlRequest = URLRequest(url: url!)
        urlRequest.cachePolicy = .returnCacheDataElseLoad
        webView.loadRequest(urlRequest) */


        //carregar o arquivo html
        let htmlFile = Bundle.main.path(forResource: "portalacademico", ofType: "html")
        let html = try? String(contentsOfFile: htmlFile!, encoding: String.Encoding.utf8)
        HTTPCookieStorage.shared.cookieAcceptPolicy = .always
        self.webView.frame = self.view.bounds
        webView.loadHTMLString(html!, baseURL: Bundle.main.resourceURL)

        //voltar e avançar entres as paginas do webview
        let swipeLeftRecognizer = UISwipeGestureRecognizer(target: self, action: #selector(handleSwipe(recognizer:)))
        let swipeRightRecognizer = UISwipeGestureRecognizer(target: self, action: #selector(handleSwipe(recognizer:)))

        swipeLeftRecognizer.direction = .left
        swipeRightRecognizer.direction = .right

        webView.addGestureRecognizer(swipeLeftRecognizer)
        webView.addGestureRecognizer(swipeRightRecognizer)
        //fim

    }



    //trabalhando com avançar e voltar webview
    @objc private func handleSwipe(recognizer: UISwipeGestureRecognizer) {
        if (recognizer.direction == .left) {
            if webView.canGoForward {
                webView.goForward()
            }
        }

        if (recognizer.direction == .right) {
            if webView.canGoBack {
                webView.goBack()
            }
        }
    }
    //FIM

}

我认为您应该使用Javascript执行下载任务。 检查func webView中的请求(webView:WKWebView,decidepolicyfornavigationAction…),如果找到下载请求,则调用javascript方法

这里有人已经用wkwebview下载了pdf


您可以将UIWebViewDelegate设置到您的WebView,并在WebView shouldStartLoadWithRequest中检查PDF和PPT文件。webViewShouldStartLoadWithRequest在用户每次单击链接时都被调用

func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {

    if reqeust for a PPT or PDF file {
        downloadFile()
        return false
    }
    return true
}


旁注:您当前使用的UIWebView已被弃用。应该考虑使用WKWebVIEW。 使用WKWebView下载.pdf和.ppt或任何特定文件,在此处查看我的解决方案


您应该始终用英语编写代码。