2017-09-15 1 views
0

J'affiche actuellement un pdf en utilisant un webView. Dans ce pdf j'ai des hyperliens vers d'autres sites Web. Le problème est que quand je vais sur l'un de ces sites web et que je fais défiler un peu là-bas, quand je clique sur le bouton de retour (qui appelle webView.goBack()) il retourne au pdf, saute en haut et ne peut pas faites-le défiler et ne voyez rien d'autre que la première page, donc il pourrait ne pas le charger correctement.PDF ne se charge pas après goBack from webView

Aussi, si je fais la même chose, allez sur ce site Web, mais ne faites pas défiler la page du tout, ou faites quoi que ce soit. Si je clique sur le bouton retour, il me ramène au pdf et fonctionne parfaitement bien.

Donc, des suggestions sur ce qui pourrait mal se passer ici et comment y remédier?

EDIT: J'ai aussi ajouté une image pour vous montrer à quoi il ressemble

pdf

+0

Avez-vous activé l'interaction utilisateur et le défilement pour votre WebView? – Malik

+0

Oui, je l'ai activé. Cela fonctionne parfaitement avant d'appuyer sur le lien hypertexte – razvan

Répondre

0

La solution que j'ai trouvé pour cela est de recharger le webView lorsque le pdf est à nouveau affiché dans la méthode déléguée

Lorsque retour est entré pour la barre de navigation:

fileprivate var shouldReloadWebView: Bool = false 

@objc private func tappedBackButton(_ button: UIButton) { 
    if webView.canGoBack { 
    shouldReloadWebView = true 
    webView.goBack() 
    } else { 
    self.navigationController!.popViewController(animated: true) 
    } 
} 

Dans la méthode déléguée:

func webViewDidFinishLoad(_ webView: UIWebView) { 
    if shouldReloadWebView { 
    shouldReloadWebView = false 
    webView.reload() 
    } 
}