ios 让WKWebview弹出键盘上的按钮影藏

2017-03-11  本文已影响1032人  管你爱不爱
#import

@interface WKWebView (AccessoryHiding)

@property (nonatomic, assign) BOOL hackishlyHidesInputAccessoryView;

@end
#import "WKWebView+AccessoryHiding.h"

#import

#import

@implementation WKWebView (HackishAccessoryHiding)

static const char * const hackishFixClassName = "WKContentViewMinusAccessoryView";

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:@"WKContentView"]) {

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("WKContentView");

object_setClass(browserView, normalClass);

}

[browserView reloadInputViews];

}

@end
上一篇下一篇

猜你喜欢

热点阅读