从wkwebview键盘上删除顶部的工具栏

时间:2019-07-25 20:38:40

标签: ios swift wkwebview custom-keyboard

我当前正在基于WKWebView创建一个应用,每次键盘弹出时,其上方的工具栏都会显示如下: Picture of keyboard with done bar

我想在键盘展开时删除此工具栏。

我已经搜索了堆栈溢出问题,但没有发现有关该主题的最新信息(我只找到UIWebView),但是如果您发现我错过的帖子,我将非常感谢。

我正在迅速使用。

感谢所有帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

找到了这篇文章的答案

在上方使用Pavel。

Removing WKWebView Accesory bar in Swift

将此代码添加到您的视图控制器:

fileprivate final class InputAccessoryHackHelper: NSObject {
    @objc var inputAccessoryView: AnyObject? { return nil }
}

extension WKWebView {
    func hack_removeInputAccessory() {
        print("s")
        guard let target = scrollView.subviews.first(where: {
            String(describing: type(of: $0)).hasPrefix("WKContent")
        }), let superclass = target.superclass else {
            return
        }

        let noInputAccessoryViewClassName = "\(superclass)_NoInputAccessoryView"
        var newClass: AnyClass? = NSClassFromString(noInputAccessoryViewClassName)

        if newClass == nil, let targetClass = object_getClass(target), let classNameCString = noInputAccessoryViewClassName.cString(using: .ascii) {
            newClass = objc_allocateClassPair(targetClass, classNameCString, 0)

            if let newClass = newClass {
                objc_registerClassPair(newClass)
            }
        }

        guard let noInputAccessoryClass = newClass, let originalMethod = class_getInstanceMethod(InputAccessoryHackHelper.self, #selector(getter: InputAccessoryHackHelper.inputAccessoryView)) else {
            return
        }
        class_addMethod(noInputAccessoryClass.self, #selector(getter: InputAccessoryHackHelper.inputAccessoryView), method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod))
        object_setClass(target, noInputAccessoryClass)
    }
}

然后用

调用
        webView.hack_removeInputAccessory()

加载视图后。