从WKWebView键盘删除顶级工具栏

问题描述 投票:0回答:1

Im当前创建基于WKWebView的应用程序,并且每当键盘上方弹出工具栏时,它显示出这样的工具栏: Picture of keyboard with done bar

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

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

使用Swift.

感谢所有的帮助,谢谢。

在此帖子上发现答案
ios swift wkwebview custom-keyboard
1个回答
3
投票

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

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()

加载视图后。

您需要在WKWebView子类中覆盖这样的InputAccessoryView:

import WebKit class MyAwesomeWebView: WKWebView { override var inputAccessoryView: UIView? { return nil } }
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.