我正在尝试使用网络视图构建一个简单的MacOS应用。我使用WKWebView
并且没有明显的原因,在初始化Web视图后立即调用webViewWebContentProcessDidTerminate()
方法,即使尝试加载任何内容也没有Web视图。经过几个小时的在线查看文档和问题,我无法弄清楚为什么会发生这种情况以及如何防止这种情况发生。网上建议的唯一事情就是在发生这种情况时重新加载网页视图,这会导致方法稍后再次被调用,等等。我现在使用以下源代码编写一个完全空的MacOS应用程序:
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet weak var window: NSWindow!
var webView: WKWebView!
func applicationDidFinishLaunching(_ aNotification: Notification) {
webView = WKWebView(frame: .zero, configuration: WKWebViewConfiguration())
webView.navigationDelegate = self
}
}
extension AppDelegate: WKNavigationDelegate {
func webViewWebContentProcessDidTerminate(_ webView: WKWebView) {
print("web view process did terminate")
webView.reload()
}
}
如果Web视图位于视图层次结构中,并且具有非零帧,并且通常是否可见,则无关紧要。我只是为了尝试一切而启用了任意加载。
我真的很感激这方面的一些帮助。我正在编译10.13 SDK并在MacOS 10.12上运行。
感谢。
答案 0 :(得分:4)
我设法搞清楚了。对于其他正在努力解决此问题的人,您需要将com.apple.security.network.client
权利添加到您的应用中。
答案 1 :(得分:0)
如果wkwebview即将终止,则可以在reload
方法内添加webViewWebContentProcessDidTerminate
方法,基本上可以重新加载Webview。
检查以下代码, 文件名:CRAWKWebView.m
- (void)webViewWebContentProcessDidTerminate:(WKWebView *)webView
{
RCTLogWarn(@"Webview Process Terminated");
if (webView) {
[webView reload];
}
}
reload
实例由wkwebview提供。