WKWebView实现UIWebView的keyboardDisplayRequiresUserAction效果

之前的解决方法在IOS 11.3之后就不好用了,必须区分开:

实现webview显示自动弹出键盘功能

+ (void)allowDisplayingKeyboardWithoutUserAction {

    Class class = NSClassFromString(@"WKContentView");

    NSOperatingSystemVersion iOS_11_3_0 = (NSOperatingSystemVersion){11, 3, 0};

    if ([[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion: iOS_11_3_0]) {

        SEL selector = sel_getUid("_startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:");

        Method method = class_getInstanceMethod(class, selector);

        IMP original = method_getImplementation(method);

        IMP override = imp_implementationWithBlock(^void(id me, void* arg0, BOOL arg1, BOOL arg2, BOOL arg3, id arg4) {

            ((void (*)(id, SEL, void*, BOOL, BOOL, BOOL, id))original)(me, selector, arg0, TRUE, arg2, arg3, arg4);

        });

        method_setImplementation(method, override);

    } else {

        SEL selector = sel_getUid("_startAssistingNode:userIsInteracting:blurPreviousNode:userObject:");

        Method method = class_getInstanceMethod(class, selector);

        IMP original = method_getImplementation(method);

        IMP override = imp_implementationWithBlock(^void(id me, void* arg0, BOOL arg1, BOOL arg2, id arg3) {

            ((void (*)(id, SEL, void*, BOOL, BOOL, id))original)(me, selector, arg0, TRUE, arg2, arg3);

        });

        method_setImplementation(method, override);

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容