键盘隐藏时键盘上方的工具栏不会隐藏

Ray*_*ond 5 uitoolbar uibarbuttonitem ios inputaccessoryview swift

我在键盘上方添加了一个工具栏以显示完成按钮以关闭键盘。我已经在我的登录屏幕上添加了它。当键盘显示并且我点击保存的密码图标以选择保存的密码时,键盘会隐藏但工具栏不会隐藏。工具栏位于屏幕底部,然后在键盘再次显示时随键盘一起向上移动。看起来很糟糕。

如何修复它以便工具栏不会自行显示而仅使用键盘显示/隐藏?

override func viewDidLoad() {
    super.viewDidLoad()
    self.emailTextField.addDoneButton(title: "Done", target: self, selector: #selector(tapDone(sender:)))
    self.passwordTextField.addDoneButton(title: "Done", target: self, selector: #selector(tapDone(sender:)))
}

@objc func tapDone(sender: Any) {
    self.view.endEditing(true)
}

extension UITextField {
    
    // Add done button above keyboard
    func addDoneButton(title: String, target: Any, selector: Selector) {
        let toolBar = UIToolbar(frame: CGRect(origin: .zero, size: CGSize(width: UIScreen.main.bounds.size.width, height: 44.0)))
        
        let flexible = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
        let barButton = UIBarButtonItem(title: title, style: .plain, target: target, action: selector)
        barButton.setTitleTextAttributes([NSAttributedString.Key.font : UIFont.main, NSAttributedString.Key.foregroundColor : UIColor.red], for: [])
        toolBar.setItems([flexible, barButton], animated: false)
        self.inputAccessoryView = toolBar
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 -1

可能不是这个问题的直接答案,但我强烈建议您查看 IQKeyboardManager 库。默认情况下,它是一个单行键盘处理程序,但您可以轻松添加附件视图,并且它可以很好地管理它们

https://github.com/hackiftekhar/IQKeyboardManager