-[WKContentView isSecureTextEntr

2017-03-10  本文已影响641人  那一处风景ljz

解决WKContentView没有isSecureTextEntry方法造成的crash。
(双击wkWeb某处闪退)

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

在程序启动的时候调用一下progressWKContentViewCrash方法就可以。(以下代码可添加到工具类Tools.m中,.h中声明一下方便调用)
注意:如果出现错误提示,可导入头文件#import <objc/runtime.h>或#import <objc/message.h>试用。实在不行我也无能为力啦,请继续前往百度,,,,

/**
 处理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;
}

来源:http://www.open-open.com/lib/view/open1487126991778.html

上一篇下一篇

猜你喜欢

热点阅读