美文网首页
-[WKContentView isSecureTextEntr

-[WKContentView isSecureTextEntr

作者: 那一处风景ljz | 来源:发表于2017-03-10 17:05 被阅读641次

    解决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

    相关文章

      网友评论

          本文标题:-[WKContentView isSecureTextEntr

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