Удалите верхнюю панель инструментов с клавиатуры wkwebview

В настоящее время я создаю приложение на основе WKWebView, и каждый раз, когда клавиатура всплывает над панелью инструментов, она отображается следующим образом:  Изображение клавиатуры с панелью готовности

Я хотел бы удалить эту панель инструментов, когда клавиатура раскроется.

Я искал переполнение стека и не нашел ничего актуального по этой теме (я нашел только UIWebView), но если вы найдете сообщение, которое я пропустил, я буду очень благодарен.

Я использую swift.

Любая помощь приветствуется, спасибо.


person Agoose Banwatti    schedule 25.07.2019    source источник


Ответы (1)


Нашел ответ в этом посте

Кредит Павлу выше.

Удаление вспомогательной панели WKWebView в 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()

После загрузки вашего представления.

person Agoose Banwatti    schedule 26.07.2019