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

前端之家收集整理的这篇文章主要介绍了ios – 在WKWebView中隐藏键盘附件栏前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何在WKWebview中隐藏键盘附件栏?虽然UIWebView有一些资源,但我还是找不到Stackoverflow上的WkWebview.

有关:

> Removing the accesory item on the UIWebView keyboard
> iOS 7 UIWebView keyboard issue

解决方法

这可以在WKWebView中使用方法的变体来调用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审核的应用中.

猜你在找的Xcode相关文章