Ios allows WKWebview to pop up the button shadow on the keyboard, ioswkwebview
# Import <WebKit/WebKit. h>
@ Interface WKWebView (AccessoryHiding)
@ Property (nonatomic, assign) BOOL hackishlyHidesInputAccessoryView;
@ End
# Import "WKWebView + AccessoryHiding. h"
# Import <objc/runtime. h>
# Import <UIKit/UIKit. h>
@ 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