如何用用户不注意的另一个替换inputAccessoryView?

时间:2018-06-20 10:31:40

标签: ios swift keyboard inputaccessoryview

我有一个要求,必须为软件键盘显示一个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不允许。

0 个答案:

没有答案