Загрузите .pdf или .ppt от WebView в Swift - PullRequest
0 голосов
/ 18 февраля 2019

Я использую компонент "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

}

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Вы можете установить UIWebViewDelegate для своего WebView и проверить наличие файлов PDF и PPT в webViewShouldStartLoadWithRequest.webViewShouldStartLoadWithRequest вызывается каждый раз, когда пользователь щелкает ссылку.

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

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

https://developer.apple.com/documentation/uikit/uiwebviewdelegate/1617945-webview?language=objc

Примечание: в настоящее время вы используете UIWebView, который устарел.Вы должны рассмотреть использование WKWebView вместо этого.

0 голосов
/ 18 февраля 2019

Я думаю, что вы должны выполнить задачу загрузки с Javascript.Проверьте ваши запросы в func webView (_ webView: WKWebView, definePolicyFor navigationAction ...) и, если найден запрос на загрузку, вызовите метод javascript.

Вот кто-то уже сделал pdf-загрузку с wkwebview.

https://forums.developer.apple.com/thread/108394

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...