我正在尝试使用以下代码加载特定网页。页面加载在我的 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
}
}
}
以下代码将打印出更精确的定位误差。如果您希望我们帮助您,请提供 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
}
}