[WebActionDisablingCALayerDelegate willBeRemoved]: unrecognized selector sent to instance 0x60400...

ios的webview在xcode全局断点打开时,某些webview页面会抓到如下异常:“[WebActionDisablingCALayerDelegate willBeRemoved]: unrecognized selector sent to instance 0x604000204ff0”,不一定会crash,但出于强迫症还是fix一下这个问题。
错误原因:H5的页面中touch事件和鼠标事件冲突导致的。
解决方法:1.让H5的开发同事找出问题改之。
2.我们原生端通过runtime给webview写一个空方法,防止crash或者异常。
3.webvie换成wkwebview加载url

下面针对法2,给出代码:

@interface H5ViewController ()<UIWebViewDelegate>

id setBeingRemoved(id self, SEL selector, ...);
id willBeRemoved(id self, SEL selector, ...);

@end

@implementation H5ViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  /** 此处初始化webview,具体代码省略 **/

  //此处给webview增加容错方法
  [self webViewAddMethods];
  
}

- (void)webViewAddMethods{
  
  //预防报错:WebActionDisablingCALayerDelegate    willBeRemoved
  Class class = NSClassFromString(@"WebActionDisablingCALayerDelegate");
  class_addMethod(class, NSSelectorFromString(@"setBeingRemoved"), setBeingRemoved, "v@:");
  class_addMethod(class, NSSelectorFromString(@"willBeRemoved"), willBeRemoved, "v@:");
  
  class_addMethod(class, NSSelectorFromString(@"removeFromSuperview"), willBeRemoved, "v@:");
}

id setBeingRemoved(id self, SEL selector, ...)
{
  return nil;
}

id willBeRemoved(id self, SEL selector, ...)
{
  return nil;
}

#pragma mark - UIWebViewDelegate
/** 此处写webview代理方法,具体代码省略*/


@end
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、WKWebView 白屏问题WKWebView 自诩拥有更快的加载速度,更低的内存占用,但实际上 WKWebV...
    iosRn阅读 6,350评论 1 10
  • WKWebView 是苹果在 WWDC 2014 上推出的新一代 webView 组件,用以替代 UIKit 中笨...
    Aiana阅读 10,152评论 1 8
  • 1、WKWebView 白屏问题WKWebView 自诩拥有更快的加载速度,更低的内存占用,但实际上 WKWebV...
    无名感恩阅读 6,526评论 0 3
  • 转载链接:腾讯Bugly 导语 WKWebView 是苹果在 WWDC 2014 上推出的新一代 webView ...
    Jelly_沫阅读 7,858评论 0 3
  • 导语 WKWebView 是苹果在 WWDC 2014 上推出的新一代 webView 组件,用以替代 UIKit...
    yahoouchen阅读 9,568评论 8 17

友情链接更多精彩内容