我目前正在创建一个基于 WKWebView 的应用程序,每次键盘弹出上方的工具栏时,它都会显示如下:
我想在键盘展开时删除此工具栏。
我已经搜索了堆栈溢出,但没有找到有关此主题的任何最新信息(我只找到了 UIWebView),但如果您找到我错过的帖子,我将非常感激。
我正在使用 swift。
感谢所有帮助,谢谢。
最佳答案
在这篇文章中找到了答案
感谢上面的 Pavel。
Removing WKWebView Accesory bar in Swift
将此代码添加到您的 View Controller :
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()
加载 View 后。
关于ios - 从 wkwebview 键盘中删除顶部工具栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57209827/