在WKWebView中隐藏键盘的附件栏

如何隐藏WKWebview中的键盘附件栏? 虽然有一些UIWebView的资源,我还没有能够find一个为Stackoverflow的WkWebview。

有关:

  1. 删除UIWebView键盘上的附件项目
  2. iOS 7的UIWebView键盘问题

这在WKWebView是可行的,用于inputAccessoryView UIWebView上的inputAccessoryView方法。

首先,添加这个小类:

 @interface _NoInputAccessoryView : NSObject @end @implementation _NoInputAccessoryView - (id)inputAccessoryView { return nil; } @end 

接下来,添加这个方法:

 - (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); } 

然后你所要做的就是调用这个方法并传入你的WKWebView

 [self removeInputAccessoryViewFromWKWebView:webView]; 

注意:我还不确定这是否会通过应用程序审查,但它与我用于UIWebView的相同代码非常相似,而且通过审查。

更新:此代码位于已通过App Store审核的应用程序中。