处理WKContentView的crash
liuhuila
8年前
<h3>解决WKContentView没有isSecureTextEntry方法造成的crash</h3> <p>程序中有web页面,使用WKWebView,但是有个crash一直存在:</p> <p>[WKContentView isSecureTextEntry]: unrecognized selector sent to instance 0x101bd5000</p> <p>网上搜索,并没有结果,是太简单了吗?不清楚,准备使用runtime给WKContentView添加一个方法,观察下</p> <p>在程序启动的时候调用一下progressWKContentViewCrash方法就可以</p> <pre> <code class="language-objectivec">/** 处理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; }</code></pre> <p> </p> <p>来自:http://www.jianshu.com/p/7ef5814a871b</p> <p> </p>