Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用WKWebView时,如何隐藏键盘的输入附件视图?_Ios_Objective C_Swift_Wkwebview - Fatal编程技术网

Ios 使用WKWebView时,如何隐藏键盘的输入附件视图?

Ios 使用WKWebView时,如何隐藏键盘的输入附件视图?,ios,objective-c,swift,wkwebview,Ios,Objective C,Swift,Wkwebview,我们的应用程序中有一个webview,可以以半wysiwyg样式编辑一些文本。它只是一个全屏文本区域,所以我们不希望键盘上的“下一步/上一步/完成”按钮占用宝贵的屏幕空间。之前,以下步骤用于删除显示这些按钮的整个栏: -(void)__removeInputAccessoryView { UIView* subview; for (UIView* view in _editorView.scrollView.subviews) { if([[view.class

我们的应用程序中有一个webview,可以以半wysiwyg样式编辑一些文本。它只是一个全屏文本区域,所以我们不希望键盘上的“下一步/上一步/完成”按钮占用宝贵的屏幕空间。之前,以下步骤用于删除显示这些按钮的整个栏:

-(void)__removeInputAccessoryView {
    UIView* subview;

    for (UIView* view in _editorView.scrollView.subviews) {
        if([[view.class description] hasPrefix:@"UIWeb"])
            subview = view;
    }

    if(subview == nil) {
        return;
    }

    NSString* name = [NSString stringWithFormat:@"%@RWWebviewHelper", subview.class.superclass];
    Class newClass = NSClassFromString(name);

    if(newClass == nil) {
        newClass = objc_allocateClassPair(subview.class, [name cStringUsingEncoding:NSASCIIStringEncoding], 0);
        if(!newClass) {
            return;
        }

        Method method = class_getInstanceMethod([RWWebviewHelper class], @selector(inputAccessoryView));
        class_addMethod(newClass, @selector(inputAccessoryView), method_getImplementation(method), method_getTypeEncoding(method));

        objc_registerClassPair(newClass);
    }

    object_setClass(subview, newClass);
}  
我在SO和Github上发现了类似的代码片段,它们都在Objective-C和Swift中。我目前正在将这个类从Objective-C转换为Swift,并从使用UIWebView转换为使用WKWebView。我在某处发现了这个:

private func removeInputAccessoryView() {
    final class FauxBarHelper: NSObject {
        var inputAccessoryView: AnyObject? { return nil }
    }

    editorView.scrollView.subviews.forEach { view in
        if String(describing: type(of: view)).hasPrefix("WKcon") {
            let noInputAccessoryViewClassName = "\(view.superclass!)_NoInputAccessoryView"
            var newClass: AnyClass? = NSClassFromString(noInputAccessoryViewClassName)
            if newClass == nil {
                let targetClass: AnyClass = object_getClass(view)
                newClass = objc_allocateClassPair(targetClass, noInputAccessoryViewClassName.cString(using: String.Encoding.ascii)!, 0)
            }

            let originalMethod = class_getInstanceMethod(FauxBarHelper.self, #selector(getter: FauxBarHelper.inputAccessoryView))
            class_addMethod(newClass!.self, #selector(getter: FauxBarHelper.inputAccessoryView), method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod))
            object_setClass(view, newClass)
        }
    }
}
但它并没有隐藏酒吧。我对破解私有API不太在行,在处理了该代码段中的值之后,我找不到隐藏该条的方法。我知道这是一个商店拒绝风险,但你知道客户是怎样的。我需要让它工作起来。我可以使用Objective-C代码段,但更喜欢Swift

有人有主意吗?我觉得在屏幕键盘上隐藏一个按钮栏应该不难,我是不是错过了一些简单的东西