网页未在 WKWebView 上加载

问题描述 投票:0回答:1

我正在尝试使用以下代码加载特定网页。页面加载在我的 Mac 和 iPhone 上的浏览器上,它也适用于我的应用程序中的

SFSafariViewController
。但
WKWebView
只显示白屏。
WKWebView
可以加载任何其他页面,如 google.com、youtube.com 等。我该如何解决此问题?我也没有收到任何错误。我需要弄清楚为什么我只对这个特定的网页有问题。任何帮助将非常适当!

@State private var isLoading = true
@State private var error: Error? = nil
let url: URL?

var body: some View {
    ZStack {
        if let error = error {
            Text(error.localizedDescription)
                .foregroundColor(.pink)
        } else if let url = url {
            WebView(url: url,
                    isLoading: $isLoading,
                    error: $error)
            .edgesIgnoringSafeArea(.all)
            if isLoading {
                ProgressView()
            }
        } else {
            Text("Sorry, we could not load this url.")
        }
        
    }
}

struct WebView: UIViewRepresentable {
    let url: URL
    @Binding var isLoading: Bool
    @Binding var error: Error?
    
    func makeCoordinator() -> Coordinator {
        Coordinator(self)
    }
    func makeUIView(context: Context) -> WKWebView  {
        let wkwebView = WKWebView()
        wkwebView.navigationDelegate = context.coordinator
        wkwebView.load(URLRequest(url: url))
        return wkwebView
    }
    func updateUIView(_ uiView: WKWebView, context: Context) {
    }
    
    class Coordinator: NSObject, WKNavigationDelegate {
        var parent: WebView
        init(_ parent: WebView) {
            self.parent = parent
        }
        
        
        func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
            parent.isLoading = true
        }
        func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
            print("loading didFinish")
            parent.isLoading = false
        }
        func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {
            print("loading error: \(error)")
            parent.isLoading = false
            parent.error = error
        }
        
    }
    
    
}
swiftui wkwebview
1个回答
0
投票

以下代码将打印出更精确的定位误差。如果您希望我们帮助您,请提供 URL 或具体错误消息。

class Coordinator: NSObject, WKNavigationDelegate {
  var parent: WebView
  init(_ parent: WebView) {
    self.parent = parent
  }
  
  func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
    parent.isLoading = true
  }
  func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    print("Loading completed")
    parent.isLoading = false
  }
  func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {
    print("Failed to load: \(error.localizedDescription)")
    if let urlError = error as? URLError {
      print("URL mistake: \(urlError.errorCode)")
    }
    parent.isLoading = false
    parent.error = error
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.