web-dev-qa-db-ja.com

WKWebViewがiOS 13でWebページをロードしない

Swiftを使用してiOS 13上のWKWebViewでWebページをロードしようとしています。 iOS 12では問題なく動作します。問題は、WKWebViewがiOS 13で白い画面を表示することです。両方(iOS 12/iOS 13)で同じURLを使用しているため、URLに問題がないことを100%確信しています。ここに私がウェブページをロードする私のUIViewControllerがあります:

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
  }
}

サファリインスペクターの結果:

  • iOS 13の場合、シミレータはabout:blank
  • 実際のデバイスの場合、iOS 12.4はwww.google.com
3
elhoucine ayoub

リクエストを行う前に常に有効なURLを確保する方法の1つは、強制アンラップの代わりに「if」を使用することです。

override func viewDidLoad() {
      super.viewDidLoad()

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

また、elseステートメントをそこに追加したり、内部に入っていない場合は早期復帰を使用して出力したりできます。

これを行ってURLが有効かどうかを確認する以外に、デバッグしてWebビューをチェックし、それがnilかどうかを確認できます。この場合、解決策は、viewWillAppearではなくviewDidLoadにコードを追加することです。

1
S.Mitchell

私はシミュレータのiOS 12.2バージョンでも試してみましたが、同じ問題が発生するので、問題は自分のデバイスのシミュレータにあり、実際のデバイスでは問題なく動作します

0
elhoucine ayoub