WebKit在iOS 8上抛出异常以调用setBeingRemoved:

时间:2014-10-06 13:21:45

标签: ios uiwebview webkit ios8

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

WebKit在webView中丢弃了未捕获的异常:willRemoveScrollingLayer:withContentsLayer:forNode:delegate:< NSInvalidArgumentException> - [WebActionDisablingCALayerDelegate setBeingRemoved:]:发送到实例的无法识别的选择器(...)

这通常是在点击webview上的按钮或链接时发生的(没有在Objective-C端进行任何其他操作),之后webview中的大部分功能都将被破坏(链接无法点击,等)。

至少有一个问题涉及此错误消息,但尚无定论答案。

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

4 个答案:

答案 0 :(得分:3)

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

-webkit-overflow-scrolling: touch;

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

答案 1 :(得分:3)

您可以使用WKWebView代替UIWebView 。 (它最初包含在iOS 8中)。我已经尝试过,似乎它没有得到这个错误。

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

答案 2 :(得分:1)

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

此处也可以看到:https://stackoverflow.com/a/26806642/580487

答案 3 :(得分:0)

我更改了填充:0 16px 0 26%;保证金左:25%;它适用于我