我有一个在我的应用上显示textField的UIAlertController。选择textField (标记在其中闪烁),并在textField上设置.becomeFirstResponder。但由于某种原因,soft-keyboard没有显示出来。我打印了一个布尔isFirstResponder,它返回false。
我在某处读到它必须在viewDidLoad中触发,但在这种情况下不可能,因为警报是通过按下来自viewDidLoad之外的function的button来显示的
下面是我的代码:
func verificationPopup(title: String, message: String, codeShouldBeVerified: Bool, context: UIViewController, callback: @escaping() -> Void) {
let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)
//THIS IS THE RELEVANT PART
if(codeShouldBeVerified) {
alert.addTextField(configurationHandler: { textField in
textField.placeholder = "Fyra siffror"
textField.textAlignment = NSTextAlignment.center
textField.delegate = self as? UITextFieldDelegate
textField.becomeFirstResponder()
print("HERE", textField.isFirstResponder)
})
alert.addAction(UIAlertAction(title: "Jag fick ingen kod", style: .default, handler: { action in
callback()
}))
}
else {
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { action in
callback()
//self.verifyNumber()
}))
alert.addAction(UIAlertAction(title: "Avbryt", style: .cancel, handler: {
action in
print("CAAAANCEL")
}))
}
context.present(alert, animated: true)
}当我刚刚设置它的时候,.isFirstResponder返回false,这似乎很奇怪。这里发生了什么事?
发布于 2019-10-01 22:23:29
在某些情况下,软键盘不会出现是很正常的。
(a)当有蓝牙键盘连接到实际设备时,或
(b)在设备模拟器中模拟硬件键盘时(菜单:硬件->键盘->连接硬件键盘)。
我知道这一点已经很久了,但有时我仍然会感到困惑,为什么直到我记得检查(主要是在使用模拟器时),键盘才会出现。它很容易遗漏,所以请确保这里不是这种情况。
https://stackoverflow.com/questions/58180655
复制相似问题