ios - 在 WKWebView 中隐藏键盘附件栏

标签 ios xcode uiwebview wkwebview

如何在 WKWebview 中隐藏键盘辅助栏?虽然有一些 UIWebView 的资源,但我在 Stackoverflow 上找不到 WkWebview 的资源。

相关:

  1. Removing the accesory item on the UIWebView keyboard
  2. iOS 7 UIWebView keyboard issue

最佳答案

这在 WKWebView 中是可能的,其变体为 the method for swizzling out the inputAccessoryView on UIWebView .

首先,添加这个小类:

@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 审核的应用中。

关于ios - 在 WKWebView 中隐藏键盘附件栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32546394/

相关文章:

swift - 在 Xcode 8.3 中编译时出现段错误 11

ios - UIWebView 将垂直滚动事件委托(delegate)给父级,如果滚动到顶部或底部

javascript - UIWebView模拟鼠标位置

ios - 以编程方式创建 UIWebView 时出错

ios - 以编程方式将 UITabBarController 添加到 UIWindow 后失去旋转支持

ios - 在 XCode 6 中导出 .xcarchive?

ios - MCSessionDelegate 要求类符合 NSObjectProtocol

iphone - 双击以全屏显示

ios - 通过 xcode 在 iphone 上测试应用程序替换了我的应用程序(从应用程序商店下载)

ios - 在 Swift 的 TableView 中填充数据时出现问题