处理WKContentView的crash

作者: 這Er | 来源:发表于2017-01-06 12:19 被阅读1269次

解决WKContentView没有isSecureTextEntry方法造成的crash

程序中有web页面,使用WKWebView,但是有个crash一直存在:
[WKContentView isSecureTextEntry]: unrecognized selector sent to instance 0x101bd5000
网上搜索,并没有结果,是太简单了吗?不清楚,准备使用runtime给WKContentView添加一个方法,观察下


在程序启动的时候调用一下progressWKContentViewCrash方法就可以

/**
 处理WKContentView的crash
 [WKContentView isSecureTextEntry]: unrecognized selector sent to instance 0x101bd5000
 */
+ (void)progressWKContentViewCrash {
    if (([[[UIDevice currentDevice] systemVersion] doubleValue] >= 8.0)) {
        const char *className = @"WKContentView".UTF8String;
        Class WKContentViewClass = objc_getClass(className);
        SEL isSecureTextEntry = NSSelectorFromString(@"isSecureTextEntry");
        SEL secureTextEntry = NSSelectorFromString(@"secureTextEntry");
        BOOL addIsSecureTextEntry = class_addMethod(WKContentViewClass, isSecureTextEntry, (IMP)isSecureTextEntryIMP, "B@:");
        BOOL addSecureTextEntry = class_addMethod(WKContentViewClass, secureTextEntry, (IMP)secureTextEntryIMP, "B@:");
        if (!addIsSecureTextEntry || !addSecureTextEntry) {
            NSLog(@"WKContentView-Crash->修复失败");
        }
    }
}

/**
 实现WKContentView对象isSecureTextEntry方法
 @return NO
 */
BOOL isSecureTextEntryIMP(id sender, SEL cmd) {
    return NO;
}

/**
 实现WKContentView对象secureTextEntry方法
 @return NO
 */
BOOL secureTextEntryIMP(id sender, SEL cmd) {
    return NO;
}

实际使用效果

在项目的新版本里加上上面处理方法以后,[WKWebView isSecureTextEntry]崩溃已经消失🤓

相关文章

网友评论

  • Mr小猪:这样使用了私有api会不会导致不让上架呢
    這Er:不会,可以正常上架
  • 半尺尘:我们这边在10.3.2的系统下,也出现了这个崩溃,用了文章里的方法现在修复了,目前情况稳定:+1:
  • 清晰00:崩溃是消失了, 按钮再次无法点击了, 应该是H5处理有问题
    這Er:@康明落 我没碰到这种情况,可否分享下复现的步骤和网页内容?:smile:
  • iOS小白2015:我按照你的这个写了,还是有crash存在,不知道作者是否还会出现呢。
    這Er:我的项目使用以后,crash消失了
  • Mossion:你好,你这个方法应该写在哪里呢
    Mossion:灰常感谢,问题解决
    Mossion:@這Er 可以解决这个问题吗?我被这个问题困扰了好久~一直都没有找到解决方法
    這Er:@Mossion 新建一个AppCrashProcessManager的类写到里面,在didFinishLaunching调用一下,简单点的可以直接写到AppDelegate

本文标题:处理WKContentView的crash

本文链接:https://www.haomeiwen.com/subject/ntgtbttx.html