我的InputAccessoryView在键盘上没有消失

时间:2018-01-18 06:43:39

标签: ios keyboard inputaccessoryview

我制作完成后的工具栏,或编号键盘键盘的下一个按钮

但是在模拟器上,如果我触摸文本字段,键盘没有显示,只有inputAccessoryView显示。

cmd + k键盘显示,但如果我再次点击cmd + k 只有键盘消失,工具栏没有消失

enter image description here

我的代码有什么问题

class ViewController: UIViewController {

    @IBOutlet weak var phoneTextField: UITextField!
    @IBOutlet weak var identifierTextField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()

        addButtonToTextField(textField: phoneTextField)
        addButtonToTextField(textField: identifierTextField)
    }
}

extension ViewController {
    func addButtonToTextField(textField: UITextField){
        let toolBar = UIToolbar()
        toolBar.sizeToFit()
        let flexibleSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
        if textField == phoneTextField {
            let nextBtn = UIBarButtonItem(title: "Next", style: .done, target: self, action: #selector(doneBtnPressed))
            toolBar.items = [flexibleSpace, nextBtn]
        }else if textField == identifierTextField {
            let doneBtn = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(doneBtnPressed))
            toolBar.items = [flexibleSpace, doneBtn]
        }

        textField.inputAccessoryView = toolBar
    }

    @objc func doneBtnPressed(){
        if phoneTextField.isFirstResponder{
            identifierTextField.becomeFirstResponder()
        }else if identifierTextField.isFirstResponder{
            identifierTextField.resignFirstResponder()
        }
    }
}

1 个答案:

答案 0 :(得分:0)

如果您在实际的iOS设备中测试它,一切都应该没问题。您所描述的是模拟器的默认行为。

希望它有所帮助。