[英]Using UIButtons to input into UITextFields all in a custom keyboard, keyboard reappears, not inputting text
我正在尝试制作一个自定义的iOS键盘,所有这些都包含在BibleKeyboardView.swift
和BibleKeyboardView.xib
文件中。 该视图的一部分包含多个UITextField,我希望通过数字按钮输入它们。 但是,当我单击任意一个UITextField时,键盘将关闭,然后重新出现,光标将永远不会停留在UITextField中,并且UIButton不会执行任何操作。
我试过设置每个UITextField的inputView = self
但是只能保持键盘关闭。 我还将每个数字按钮设置为情节提要面板右侧菜单中的键盘键。
这是我的代码,但是当我尝试运行它时, activeField
为nil并引发Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
错误Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
。 该代码永远不会将其传递给textFieldDidBeginEditing()
因为该打印语句不会运行(基于如何将文本添加到活动UITextField )。
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没有运行?
最后的答案是:在awakeFromNib()
为每个UITextField
设置委托和inputView。 另外,似乎键盘关闭/重新出现的问题仅发生在iPad模拟器上,但是当我在实际的iPad上运行它时,它消失了。
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()
chapterA.delegate = self
chapterA.inputView = self
verseA.delegate = self
verseA.inputView = self
chapterB.delegate = self
chapterB.inputView = self
verseB.delegate = self
verseB.inputView = self
}
func textFieldDidBeginEditing(_ textField: UITextField) {
activeField = textField
}
@IBAction func numBtnTapped(_ sender: UIButton) {
activeField!.text = activeField!.text! + (sender.titleLabel?.text!)!
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.