How can I hide keyboard accessory bar in WKWebview? Although there are some resources for UIWebView, I haven\'t been able to find one for WkWebview on Stackoverflow.
This is possible in WKWebView
with a variant of the method for swizzling out the inputAccessoryView on UIWebView.
First, add this little class:
@interface _NoInputAccessoryView : NSObject
@end
@implementation _NoInputAccessoryView
- (id)inputAccessoryView {
return nil;
}
@end
Next, add this method:
- (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([_NoInputAccessoryView class], @selector(inputAccessoryView));
class_addMethod(newClass, @selector(inputAccessoryView), method_getImplementation(method), method_getTypeEncoding(method));
objc_registerClassPair(newClass);
}
object_setClass(targetView, newClass);
}
Then all you have to do is call that method and pass in your WKWebView
:
[self removeInputAccessoryViewFromWKWebView:webView];
Note: I do not yet know for sure if this will pass app review, but it is extremely similar to the same code I used for UIWebView
, and that did pass review.
Update: This code is in an app that has passed App Store review.