我正在开发一个iOS应用程序,它将在wkWebView中显示360个全景内容.该页面确实加载,但是当它收到内存警告时,它在iPad 2上显示一个空白视图.
相关代码:
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', '); 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.
有什么想法吗?
原因之一是WebContent进程崩溃。
在iOS 9及更高版本中,您可以使用WKNavigationDelegate方法webViewWebContentProcessDidTerminate
来捕获这种情况。由您决定如何响应崩溃,但是如果重新加载页面就足够了,那么[webView reload]
将完成如下所示的操作。正如@ray在评论中提到的那样,您不会从此委托调用中获得任何有关崩溃原因的有用信息。
- (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
为nil。