web-dev-qa-db-fra.com

WKWebView ne charge pas la page Web sur iOS 13

J'essaie de charger une page Web avec WKWebView sur iOS 13 avec Swift. Cela fonctionne bien dans iOS 12. Le problème est que WKWebView affiche un écran blanc sur iOS 13. La même URL utilisée pour les deux (iOS 12/iOS 13), donc je suis sûr à 100% qu'il n'y a pas de problème dans l'URL. Voici mon UIViewController où je charge la page Web:

import UIKit
import WebKit

class WebViewController: UIViewController , WKNavigationDelegate{

  var param : String!
  var webView: WKWebView!

  override func viewDidLoad() {
      super.viewDidLoad()

      let url = URL(string: "https://google.com")!
      webView.load(URLRequest(url: url))
  }

  override func loadView() {
      webView = WKWebView()
      webView.navigationDelegate = self
      view = webView
  }
}

résultat de l'inspecteur de safari:

  • pour le simulateur iOS 13 est about:blank
  • pour un appareil réel, iOS 12.4 est www.google.com
3
elhoucine ayoub

Une façon de vous assurer d'avoir toujours une URL valide avant de faire la demande est d'utiliser un "si" au lieu de forcer le déballage.

override func viewDidLoad() {
      super.viewDidLoad()

      if let url = URL(string: MyData.url){
         webView.load(URLRequest(url: url))
      }
}

Vous pouvez également y ajouter une instruction else ou utiliser un retour anticipé pour imprimer quelque chose si vous n'y allez pas.

En plus de faire cela pour vérifier que l'url est valide, vous pouvez déboguer et vérifier la vue Web pour voir si c'est nil. Si tel est le cas, votre solution consiste à ajouter votre code à viewWillAppear au lieu de viewDidLoad.

1
S.Mitchell

Je l'ai également essayé avec la version iOS 12.2 sur simulateur et donne le même problème, donc je vois que le problème est sur les simulateurs de mon appareil c'est moi-même, sur le vrai appareil ça marche bien

0
elhoucine ayoub