内存警告后WKWebView变为空白

 游山玩水人生 发布于 2022-12-04 14:47

我正在开发一个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.

有什么想法吗?

1 个回答
  • 原因之一是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。

    2022-12-11 02:58 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有