作者:金豪情圣 | 来源:互联网 | 2022-12-26 16:10
我正在使用WKWebView,将内容可编辑的div作为富文本编辑器的核心,并希望修改键盘上方的顶部工具栏,该工具栏包含自动更正建议和格式按钮。(不知道这是否算作输入的附件视图)。
我发现一些帖子显示了如何删除该栏,但它们似乎都不起作用,理想情况下,我还是想保留自动更正部分。
至少有一个应用程序Ulysses可以做到这一点(尽管我不知道它是否具有网络视图):
确实,我非常确定我可以通过在键盘视图层次结构上进行手术来实现这一目标……但这似乎是一种乏味而脆弱的方法。
有没有更好的办法?
谢谢!
1> Samantha..:
也许本教程对您UITextInputAssistantItem
有所帮助。
就是说,在摆弄了一段时间之后,使用WKWebView
I仍然只能使它第一次在键盘显示时起作用,并且每次之后它将返回到其原始状态。我发现唯一能够持续工作的东西如下所示:
class ViewController: UIViewController {
@IBOutlet weak private var webView: WKWebView!
private var contentView: UIView?
override func viewDidLoad() {
super.viewDidLoad()
webView.loadHTMLString("", baseURL: nil)
for subview in webView.scrollView.subviews {
if subview.classForCoder.description() == "WKContentView" {
cOntentView= subview
}
}
inputAssistantItem.leadingBarButtOnGroups= [UIBarButtonItemGroup(barButtonItems: [UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(donePressed(_:)))], representativeItem: nil)]
inputAssistantItem.trailingBarButtOnGroups= [UIBarButtonItemGroup(barButtonItems: [UIBarButtonItem(barButtonSystemItem: .camera, target: self, action: #selector(openCamera(_:))), UIBarButtonItem(barButtonSystemItem: .action, target: self, action: #selector(actionPressed(_:)))], representativeItem: nil)]
NotificationCenter.default.addObserver(self, selector: #selector(keyboardDidShow), name: .UIKeyboardDidShow, object: nil)
}
@objc private func donePressed(_ sender: UIBarButtonItem) {
view.endEditing(true)
}
@objc private func openCamera(_ sender: UIBarButtonItem) {
print("camera pressed")
}
@objc private func actionPressed(_ sender: UIBarButtonItem) {
print("action pressed")
}
@objc private func keyboardDidShow() {
contentView?.inputAssistantItem.leadingBarButtOnGroups= [UIBarButtonItemGroup(barButtonItems: [UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(donePressed(_:)))], representativeItem: nil)]
contentView?.inputAssistantItem.trailingBarButtOnGroups= [UIBarButtonItemGroup(barButtonItems: [UIBarButtonItem(barButtonSystemItem: .camera, target: self, action: #selector(openCamera(_:))), UIBarButtonItem(barButtonSystemItem: .action, target: self, action: #selector(actionPressed(_:)))], representativeItem: nil)]
}
}
它将给出如下内容:
每次在键盘显示时都必须在内容视图上以及视图控制器本身上进行设置,这有点令人沮丧,我希望有一种更好的方法来进行此设置。...但是很遗憾,我找不到它。