美文网首页移动端富文本iOS开发
IOS - 删除WebView键盘上的工具条

IOS - 删除WebView键盘上的工具条

作者: 囧rg | 来源:发表于2017-12-26 17:56 被阅读50次

UIWebView代码:

.h文件

#import "ZSSWebView.h"
@interface ZSSWebView (AccessoryHiding)
@property (nonatomic, assign) BOOL hackishlyHidesInputAccessoryView;
@end

.m文件

#import "ZSSWebView+AccessoryHiding.h"
#import <objc/runtime.h>
@implementation ZSSWebView (AccessoryHiding)
static const char * const hackishFixClassName = "UIWebBrowserViewMinusAccessoryView";
static Class hackishFixClass = Nil;
- (UIView *)hackishlyFoundBrowserView {
    UIScrollView *scrollView = self.scrollView;
    UIView *browserView = nil;
    for (UIView *subview in scrollView.subviews) {
        NSLog(@"%@",NSStringFromClass([subview class]));
        if ([NSStringFromClass([subview class]) hasPrefix:@"UIWebBrowserView"]) {
            browserView = subview;
            break;
        }
    }
    return browserView;
}

- (id)methodReturningNil {
    return nil;
}

- (void)ensureHackishSubclassExistsOfBrowserViewClass:(Class)browserViewClass {
    if (!hackishFixClass) {
        Class newClass = objc_allocateClassPair(browserViewClass, hackishFixClassName, 0);
        IMP nilImp = [self methodForSelector:@selector(methodReturningNil)];
        class_addMethod(newClass, @selector(inputAccessoryView), nilImp, "@@:");
        objc_registerClassPair(newClass);
        hackishFixClass = newClass;
    }
}

- (BOOL) hackishlyHidesInputAccessoryView {
    UIView *browserView = [self hackishlyFoundBrowserView];
    return [browserView class] == hackishFixClass;
}

- (void) setHackishlyHidesInputAccessoryView:(BOOL)value {
    UIView *browserView = [self hackishlyFoundBrowserView];
    if (browserView == nil) {
        return;
    }
    [self ensureHackishSubclassExistsOfBrowserViewClass:[browserView class]];
    if (value) {
        object_setClass(browserView, hackishFixClass);
    } else {
        Class normalClass = objc_getClass("UIWebBrowserView");
        object_setClass(browserView, normalClass);
    }
    [browserView reloadInputViews];
}
@end

WKWebView代码:

.h文件

#import "ZSSWebView.h"
@interface ZSSWebView (AccessoryHiding)
- (void)removeInputAccessoryViewFromWKWebView:(WKWebView *)webView;
@end

.m文件

#import "ZSSWebView+AccessoryHiding.h"
#import <objc/runtime.h>

@implementation ZSSWebView (AccessoryHiding)

- (id)inputAccessoryView {
    return nil;
}

- (void)removeInputAccessoryViewFromWKWebView:(WKWebView *)webView {
    UIView *targetView;
    for (UIView *view in webView.scrollView.subviews) {
        if([[view.class description] hasPrefix:@"WKContent"]) {
            targetView = view;
        }
    }
    if (!targetView) {
        return;
    }
    
    NSString *noInputAccessoryViewClassName = [NSString stringWithFormat:@"%@_NoInputAccessoryView", targetView.class.superclass];
    Class newClass = NSClassFromString(noInputAccessoryViewClassName);
    if(newClass == nil) {
        newClass = objc_allocateClassPair(targetView.class, [noInputAccessoryViewClassName cStringUsingEncoding:NSASCIIStringEncoding], 0);
        if(!newClass) {
            return;
        }
        Method method = class_getInstanceMethod([ZSSWebView class], @selector(inputAccessoryView));
        class_addMethod(newClass, @selector(inputAccessoryView), method_getImplementation(method), method_getTypeEncoding(method));
        objc_registerClassPair(newClass);
    }
    object_setClass(targetView, newClass);
}
@end

相关文章

  • IOS - 删除WebView键盘上的工具条

    UIWebView代码: .h文件 .m文件 WKWebView代码: .h文件 .m文件

  • iOS键盘工具条自定义

    在iOS中使用UITextField控件时会弹出软键盘,此时默认在软键盘上方会出现一个工具条,一般默认工具条有两种...

  • Xcode快捷键

    Xcode快捷键: ***把鼠标放工具条上,可以看到打开的工具条后面跟着快捷键标示*** ***官方给的关于Mac...

  • vim 快捷操作

    1.vim 删除一行:将光标移动到需要删除的行按一下ESC键,确保退出编辑模式按两次键盘上面的 d键,就可以删除了...

  • Python学习科普--selenium模拟键盘事件(回车、删除

    sendkeys可以模拟键盘输入和键盘上的按键:send_keys(Keys.BACK_SPACE) 删除键Ba...

  • 巧妙删除婚姻键盘上的离婚键

    离婚是婚姻中唯恐避之不急的字眼;离婚在婚姻中最不愿涉及,但却又时常遇见;离婚较之结婚对人生意义的重大不亚于后者,亦...

  • 疼是推着人往前走的风

    转自《近朱成玉》公众号,作者朱成玉。有删节。 在键盘上敲字的时候,忽然想,如果人生也有一个删除键,我会删除...

  • Flutter 与 iOS 原生 WebView 对比

    Flutter 与 iOS 原生 WebView 对比Flutter 与 iOS 原生 WebView 对比

  • 扭曲

    By 赵勇涛 当我的手放在键盘上,久久不敢动弹的时候;当我的手不停地在键盘上敲打,却又不断的按下删除键的时候。我不...

  • 给数字键盘加return按钮

    在实际开发中会遇到数字键盘上原本return键的位置被一个删除按钮代替了,但是又希望有个renturn键,用来回收...

网友评论

本文标题:IOS - 删除WebView键盘上的工具条

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