【问题标题】:WebKit throwing exception on iOS 8 for call to setBeingRemoved:WebKit 在 iOS 8 上为调用 setBeingRemoved 引发异常:
【发布时间】:2014-10-06 13:21:45
【问题描述】:

我有一个应用程序,它的某些屏幕依赖于 UIWebViews,但从 iOS 8 开始,我开始看到偶尔抛出以下异常:

WebKit 在 webView:willRemoveScrollingLayer:withContentsLayer:forNode:delegate: -[WebActionDisablingCALayerDelegate setBeingRemoved:]: unrecognized selector sent to instance (...) 中丢弃了一个未捕获的异常(...)

这通常会在点击 webview 上的按钮或链接时发生(在 Objective-C 端没有任何其他事情发生),之后 webview 中的大部分功能将被破坏(链接不可点击,等)。

我已经看到至少一个其他问题涉及此错误消息,但还没有确定的答案。

有没有人遇到过这个问题并弄清楚出了什么问题/是什么原因造成的? 它似乎完全取决于 HTML 内容,这意味着引发此异常的事实是 iOS 8 错误。

【问题讨论】:

  • 感谢您的帮助 Zaph。
  • 错误消息 is 完整(除非您指的是 (...),它是变量的地址)。关于代码:我没有包含它的原因是因为这取决于 HTML,HTML 上的任何内容都不应该在 Objective-C 端引起这种异常。我看到过其他关于此异常的投诉,它们肯定有不同的 HTML 源代码,这里的重点是 iOS 7 不会发生此错误,仅 iOS 8 会发生此错误。
  • 你设置异常断点了吗?
  • 是的,但这也无济于事,它只是在 main() 上中断,堆栈跟踪上没有其他内容。
  • 我刚读到这个,还没试过,但这里是:patrickmuff.ch/blog/2014/10/01/…

标签: ios uiwebview webkit ios8


【解决方案1】:

原来这个错误是由在我的 HTML 中的 iframe 上使用以下 CSS 属性引起的:

-webkit-overflow-scrolling: touch;

删除它(我们现在正在寻找合适的替代方案)并且 UIWebView 不再崩溃。

【讨论】:

  • 不确定您是否还在寻找,但我刚刚发布了一个可以保留这些样式的修复程序
  • 好吧,我在加载谷歌搜索结果时遇到了这个崩溃。我无法更改 Google CSS,所以我想知道是否有任何方法可以防止崩溃。
  • @Sundraw 你找到解决方案了吗?加载 Google 搜索结果时出现此错误
【解决方案2】:

您可以使用WKWebView 代替 UIWebView。 (它首先包含在 iOS 8 中)。我试过了,好像没有这个bug。

如果您的目标是 iOS 8 之前的版本,您可以实现后备程序来加载 UIWebView 或 WKWebView,here you are 开箱即用的实现

【讨论】:

  • 感谢您告诉我,但不幸的是,我暂时仍然坚持使用 UIWebView(我正在使用的某些功能在 WKWebView 上仍然不可用)。
【解决方案3】:

我将-webkit-transform: translateZ(0px) 放在我的body 元素上。似乎解决了这个问题,我可以保留-webkit-overflow-scrolling 样式。

也可以在这里看到:https://stackoverflow.com/a/26806642/580487

【讨论】:

  • 希望我早点知道这件事......如果只有 iOS8 UIWebView 能像 Safari 一样工作!
  • 这个错误有两个原因。这是其中之一。另一个是同一 HTML 中的多个 -webkit-overflow-scrolling:touch 样式。这个解决方案让我保留其中一个
【解决方案4】:

我更改了填充:0 16px 0 26%;到左边距:25%;它对我有用

【讨论】:

    猜你喜欢
    • 2014-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    • 1970-01-01
    • 2021-01-05
    相关资源
    最近更新 更多