使用UIButtons在自定义键盘中全部输入到UITextFields中,重新出现键盘,而不输入文本

时间:2019-02-18 06:23:28

标签: ios swift uitextfield custom-keyboard

我正在尝试制作一个自定义iOS键盘,所有键盘都包含在BibleKeyboardView.swiftBibleKeyboardView.xib文件中。该视图的一部分包含多个UITextField,我希望通过数字按钮输入它们。但是,当我单击任意一个UITextField时,键盘将关闭,然后重新出现,光标将永远不会停留在UITextField中,并且UIButton不会执行任何操作。

Gif of the keyboard disappearing/reappearing issue

我尝试设置每个UITextField的inputView = self,但这只能保持键盘关闭。我还在情节提要右侧菜单中将每个数字按钮设置为键盘键。

这是我的代码,但是当我尝试运行它时,activeField为nil,并抛出Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value错误。该代码永远不会进入textFieldDidBeginEditing(),因为该print语句不会运行(基于How to add text to an active UITextField)。

activeField is nil error screenshot

class BibleKeyboardView: UIView, UITextFieldDelegate {

    @IBOutlet weak var chapterA: UITextField!
    @IBOutlet weak var verseA: UITextField!
    @IBOutlet weak var chapterB: UITextField!
    @IBOutlet weak var verseB: UITextField!

    var activeField: UITextField?

    override func awakeFromNib() {
        super.awakeFromNib()
        activeField?.delegate = self
    }

    func textFieldDidBeginEditing(_ textField: UITextField) {
        activeField = textField
        activeField?.inputView = self
        print("made active field")
    }

    @IBAction func numBtnTapped(_ sender: UIButton) {
        activeField!.text = activeField!.text! + (sender.titleLabel?.text!)!
}

梦想是当我使用编码的数字键盘点击时,可以在每个UITextField中输入数字。 为什么当我单击UITextField时,键盘会不断消失并重新出现?为什么textFieldDidBeginEditing无法运行?

1 个答案:

答案 0 :(得分:0)

最后的答案:为Service中的每个DAO设置委托和inputView。另外,似乎键盘关闭/重新出现的问题仅发生在iPad模拟器上,但是当我在实际的iPad上运行时,它消失了。

UITextField