内存警告后 WKWebView 变为空白

2024-04-09

我正在开发一个 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', '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 上运行良好。

有什么想法吗?


造成这种情况的主要原因之一是 WebContent 进程崩溃。

在 iOS 9 及更高版本中,您可以使用 WKNavigationDelegate 方法webViewWebContentProcessDidTerminate来抓这个案子。由您决定如何响应崩溃,但如果重新加载页面就足够了,那么[webView reload]将执行如下所示的技巧。正如 @ray 在评论中提到的,您将不会获得任何有关why此委托调用导致的崩溃。

- (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 is nil.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

内存警告后 WKWebView 变为空白 的相关文章

  • 创建类似于邮件应用程序菜单的 iPhone 弹出菜单

    当您想要回复消息时 我想创建一个类似于邮件应用程序中的弹出菜单 我在多个应用程序中看到过这一点 所以我不确定框架中是否内置了某些内容或一些示例代码 在 Swift 中创建操作表 代码已使用 Swift 5 进行测试 从 iOS 8 开始 U
  • Swift - 本地通知不会被触发

    我正在 Swift 3 中编码 我只是想发送通知now没有任何延迟或间隔 然而 通知永远不会被触发 这是我的代码 视图控制器代码 import UserNotifications class HomeViewController UIVie
  • TDD iOS 教程 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您好 我正在寻找非常好的 iOS TDD 教程 请您帮助我 什么是最好的 iOS TDD 书籍 博客
  • 允许的 APNS 持续连接数量是多少?

    我正在尝试编写服务器端代码来为我的应用程序发送推送通知 根据 Apple 的建议 我计划保留连接并根据需要发送推送通知 Apple 还允许打开和保留多个并行连接以发送推送通知 您可以与同一网关或多个网关实例建立多个并行连接 为此 我想维护一
  • 如何在 iOS 上压缩 Realm DB?

    我想定期压缩 iOS 上的 Realm 实例以回收空间 我认为该过程是将数据库复制到临时位置 然后将其复制回来并使用新的default realm 文件 我的问题是Realm 其行为就像单例并回收对象 因此我无法真正关闭它并告诉它打开新的
  • UITextView 动画更改框架不会动画文本重新分配

    我有一个 UITextView 我试图在用户点击按钮时为框架的变化设置动画 基本上 文本视图会变大以适应屏幕 以便可以显示更多文本 然后当用户再次点击按钮时 它会缩小到原始框架 我使用块执行动画 如下所示 if isDisplayingDe
  • UITableview 中的水平和垂直滚动[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 I want to make a lineup for a festival You can see what I want to a
  • 将第 3 方库 ZXing 导入 Xcode

    我尝试了多种方法将第 3 方库 ZXing 导入我的 iOS 应用程序 但所有方法都很痛苦 或者根本不起作用 如果有人可以建议我做错了什么 或者提出导入 ZXing 等库的更好方法 我将非常感激 一定比这个容易 这就是我所做的 结果是 My
  • 自定义字体显示在 IB 中,但不显示在模拟器中

    我已经设置了一个UITextView and a UILabel使用自定义字体 它是垂直镜像的蒙古文字体 但我还添加了英文文本 以便您可以看到效果 这些文字显示在 Interface Builder 中 但在模拟器中大部分字符都在UITex
  • SwiftUI 列表与右侧的部分索引?

    是否可以有一个在右侧有索引的列表 就像下面 SwiftUI 中的示例一样 我在 SwiftUI 中做了这个 Contacts swift TestCalendar Created by Christopher Riner on 9 11 2
  • 无法构建 Saurik 的 ldid 实用程序

    当我执行此命令 make sh 时 我遇到这些错误 构建用于越狱调整开发的 ldid 实用程序 Bilals Mac ldid billy make sh g arch i386 arch x86 64 arch ppc arch armv
  • 本地化现有的 iOS 应用程序

    我不敢相信以前没有人问过这个问题 要么是我的编码实践太无组织性 要么是我没有使用正确的关键字 How can I localize an existing iOS app that does not use NSLocalizedStrin
  • 网站在 iPhone 屏幕右侧显示空白区域

    我遇到问题http eiglaw com http eiglaw com iPhone 屏幕右侧显示约 25 像素宽的空白 边框 我在 stackoverflow 上研究了这个问题 这些帖子是相关的 但是当我尝试提供的各种解决方案时 我无法
  • 使用 iPhone 中的地图视图读取当前位置名称

    我读取了当前位置的纬度和经度值 然后成功将该位置固定在 iPhone 中 现在我想使用这个纬度和经度值读取该地名 我使用以下代码来读取查找当前位置 void mapView MKMapView mapView1 didUpdateUserL
  • 如何在 Firebase 控制台中使用 Apple 新的 APN .p8 证书

    随着最近 Apple 开发者帐户的升级 我面临着一个困难 在尝试创建推送通知证书时 它为我提供了 p8 证书 而不是可以导出到 p12 的 APNs 证书 Firebase 控制台仅接受 p12 证书 那么我如何从这些新的 p8 证书中获取
  • 当地图视图只是屏幕的一部分时,如何在 iOS 模拟器中进行捏合?

    我在 iPad 上有一个视图 我正在添加MKMapView也就是说 全屏高度的一半 然而 当我尝试在 iOS 模拟器上进行捏合时 它不起作用 因为 to nubs 填充了模拟器上的整个 iPad 视图 And so with the map
  • 将 Firebase 云消息传递与 Windows 应用程序结合使用

    我在 Android 和 iOS 应用程序中使用 Firebase Cloud Messaging 但是我还有此应用程序的 Windows Mac OS 版本 我想保留相同的逻辑 我知道 Firebase Cloud Messaging 可
  • 根据 iOS 版本使用不同的类实现?

    iOS 11 最近添加了一个我想使用的新功能 但我仍然需要支持旧版本的 iOS 有没有一种方法可以将同一个类编写两次 并让较新版本的 iOS 使用该类的一个版本 而旧版本的 iOS 使用另一个版本 注 最初我用的是if available
  • Xcode 8 / Swift 3:“UIViewController 类型的表达式?未使用”警告

    我有以下函数 它之前编译得很干净 但在 Xcode 8 中生成警告 func exitViewController navigationController popViewController animated true UIViewCon
  • 在 UIScrollview 上显示缩略图的最佳方法是什么(从服务器下载)

    我想在 UIScrollview 如照片应用程序 上显示许多图像 作为缩略图 所有图像将从服务器下载 据我所知 有几种选择 1 通过创建 UIImageviews 然后将它们添加为主滚动视图上的子视图 2 通过子类化一个UIView类 然后

随机推荐

  • 避免 InvalidOperationException 的最佳实践:集合已修改?

    很多时候我需要这样的东西 foreach Line line in lines if line FullfilsCertainConditions lines Remove line 这不起作用 因为我总是得到一个InvalidOperat
  • Highcharts 系列更新动画

    我可以使用此方法更新蜘蛛图的数据值并查看其动画 chart series i setData newSeries i data 但是 由于蜘蛛图中的系列不仅包括data还有其他领域 例如 series name Allocated Budg
  • 如何在容器内放置旋转图像?

    使用 CSS3 HTML 如果需要的话还可以使用 javascript jquery 我需要将图像旋转 90 270 度并使其位置填充其父 div 容器 听起来很简单 但是当图像旋转时 位置会发生变化 我不知道如何或为什么 这是一个 jsF
  • 仅当某个字符不直接跟在另一个特定字符之后时才拆分该字符串

    我有以下代码行来分割字符串data2出现空白实例时进入列表 string list data2 split 但是 在我的一些数据中 日期格式为 28 Dec 这里 上面的代码在我不希望的情况下在日期和月份之间的空白处进行了分割 有没有办法我
  • Haskell 中的融合是什么?

    我时不时地注意到 Haskell 文档中的以下内容 例如在Data Text https hackage haskell org package text 1 2 2 1 docs Data Text html 受融合影响 What is
  • Ruby 是否有与未定义实例变量等效的 method_missing ?

    当我调用一个不存在的方法时 method missing会告诉我方法的名称 当我尝试访问尚未设置的变量时 该值只是nil 我试图动态拦截对 nil 实例变量的访问 并根据正在访问的变量的名称返回一个值 最接近的等价物是 PHP 的 get
  • J2ME - 使用 javax.microedition.amms.control.camera.CameraControl;是否可以禁用快门声音?

    在我的黑莓应用程序中 我已经实现了相机 并希望用我自己的声音替换默认的快门声音 我想我可以通过使用方法enableShutterFeedback false 来静音默认相机声音 然后播放我自己的声音 或者在相机激活之前立即播放我的声音来做到
  • Kotlin 中的 crossinline 和 noinline 有什么区别?

    这段代码编译时有警告 性能影响微不足道 inline fun test noinline f gt Unit thread block f 这段代码不编译 非法使用内联参数 inline fun test crossinline f gt
  • 使用 AutoSize=false 防止标签中自动换行

    当标签控件的自动大小设置为 false 时 如何防止设计器模式下 Label 控件中的自动换行 基本上我想在设计器模式下自由移动和调整标签大小 但其文本应始终位于一行 如果需要则剪切 谢谢你的帮助 你想阻止它吗only在设计器模式还是在运行
  • TypeScript 中变量后面的感叹号是什么意思? [复制]

    这个问题在这里已经有答案了 我在一些 React TypeScript 实现中看到过 例如 ref ref gt this container ref 里面的感叹号是什么意思ref 这是 TypeScript 中的特定内容 还是新的标准 J
  • 如何调试 STL/C++ 的 GCC/LD 链接过程

    我正在用 C 开发裸机 cortex M3 以获取乐趣和利润 我使用 STL 库 因为我需要一些容器 我认为通过简单地提供我的分配器 它不会向最终的二进制文件添加太多代码 因为您只得到您使用的内容 实际上我根本没想到与 STL 有任何链接过
  • 如何使用OSRM匹配服务

    如标题中所述 如何使用匹配调用 I tried http router project osrm org match v1 driving 8 610048 46 99917 8 530232 47 051 overview full ra
  • 如何从内联样式中获取百分比高度而不是像素高度?

    所以基本上 我有许多具有内联样式的元素height与百分比 虽然 当我尝试将高度保存为要使用的变量时 它会将其保存为像素 例如 div class wrapper div style height 10 Testing 123 div di
  • 更新到 MacOs Mojave 10.14 后是否有 OpenGL 黑屏和伽玛校正?

    我不小心更新了我的 Mac OpenGL 现在在最新的 MacOS Mojave 中已被弃用 我正在使用 OpenGL GLUT 我知道这很旧 但我只需要一个简单的程序 并在终端上运行 不使用 Xcode 使用在 Sierra 中完美运行的
  • 基于ONVIF wsdl生成Java webservice(自顶向下方法)

    我想为像相机这样的设备生成服务器代码 这些设备有一个标准协议 称为ONVIF https www onvif org它发布了一些流行的 WSDL 文档 所以我必须从 ONFIV 的 WSDL 文档生成一个接口和骨架 当我使用 wsdl2ja
  • Oracle 动态旋转

    我有下表 我需要根据 CCL 列创建列 CCL 列中的值未知 我不知道从哪里开始 任何帮助 将不胜感激 TABLEA ID CCL Flag 1 john x 1 adam x 1 terry 1 rob x 2 john x Query
  • Blackberry Java 中的类之间调用

    当屏幕上 单击 位图时 我试图推送一个新屏幕 为此 我从这篇文章中创建了一个类 黑莓可点击位图字段 https stackoverflow com questions 5722875 blackberry clickable bitmapf
  • 安装 gem 时出错:无法为 cygwin 的堆保留空间,Win32 错误 487

    我正在尝试安装win32 api我的机器上安装了 gem 并且在构建本机扩展时遇到了一些问题 gem install win32 api no ri rdoc Temporarily enhancing PATH to include De
  • 如何为WinForm、C#制作框架?

    我一直在研究改变Windows窗体边框的颜色 发现它是由Windows决定的 好吧 这是有道理的 所以我看到以前问过这个问题的人被告知去这里http customerborderform codeplex com http customer
  • 内存警告后 WKWebView 变为空白

    我正在开发一个 iOS 应用程序 它将在 wkWebView 中显示一些 360 度全景内容 该页面确实会加载 但当它收到内存警告时 它会在 iPad 2 上显示空白视图 相关代码 NSURLRequest req NSURLRequest