2014-12-19 22 views
8

我正在开发一个iOS应用程序,它将在wkWebView中显示一些360全景内容。该网页确实负载,但是当它收到一个内存警告,它显示了iPad 2的WKWebView在记忆体警告后变为空白

空白视图相关代码:

NSURLRequest *req = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://360yerevan.com/mobilembed/91001/"] ]; 


NSString *jScript = @"var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta);"; 

WKUserScript *wkUScript = [[WKUserScript alloc] initWithSource:jScript injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES]; 
WKUserContentController *wkUController = [[WKUserContentController alloc] init]; 
[wkUController addUserScript:wkUScript]; 

WKWebViewConfiguration *wkWebConfig = [[WKWebViewConfiguration alloc] init]; 
wkWebConfig.userContentController = wkUController; 
wkWebConfig.processPool = [[WKProcessPool alloc] init]; 

WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:wkWebConfig]; 

[self.view addSubview:webView]; 
[webView loadRequest:req]; 

这工作正常在iPhone 5/5S。

有什么想法?

+0

我也在研究这个问题。在我们的例子中,似乎沙盒WkWebView.WebContent进程崩溃,留下应用程序中的空白屏幕。 你从哪里看到内存警告,你能分享这些日志吗? 我们在这里讨论的问题: https://github.com/Telerik-Verified-Plugins/WKWebView/issues/41 – IjzerenHein 2014-12-24 09:18:19

+1

也许你可以尝试保持对webView的强有力的参考。 – Yinfeng 2014-12-28 14:03:52

+0

谢谢@Yinfeng你的回答非常有帮助。 – 2014-12-29 14:44:08

回答

3

在iOS 9及更高版本中,您可以使用WKNavigationDelegate方法webViewWebContentProcessDidTerminate捕获何时WebContent进程崩溃。您需要决定如何应对崩溃,但是如果重新加载页面就足够了,那么[webView reload]将执行如下所示的技巧。

- (void)webViewWebContentProcessDidTerminate:(WKWebView *)webView { 
    // Reload current page, since we have crashed the WebContent process 
    // (most likely due to memory pressure) 
    [webView reload]; 
} 

在iOS8及以下版本中,您可以检查myWKWebViewInstance.title是否为零。

相关问题