我有一个要求,必须为软件键盘显示一个inputAccessoryView
,而对于硬件键盘显示另一个。在收到通知后,我制作了一个包含NotificationCenter
的单独的管理器,我计算出当前正在使用的软件或硬件。之后,我尝试将第一个inputAccessoryView
替换为应与硬件键盘一起使用的键盘,但是在调用textView.reloadInputViews()
时出现闪烁,我尝试了不带动画的尝试,但无济于事。请告诉我如何替换用户看不见的inputAccessoryView
?谢谢。
代码示例
@objc private func keyboardWillShow(_ notification: Notification) {
// test
if KeyboardManager.shared.isHardwareKeyboard {
let redView = UIView()
redView.backgroundColor = .red
redView.frame = CGRect(x: 0, y: 0, width: 320, height: 100)
textView?.inputAccessoryView = redView
UIView.performWithoutAnimation {
self.textView?.reloadInputViews()
}
}
}
更新:当然,最好的选择是知道使用了哪个键盘并仅添加当前需要的inputAccessoryView
,但不幸的是Apple不允许。