gpt4 book ai didi

swift - 为什么不 becomeFirstResponder 在警报消息文本字段上触发软键盘

转载 作者:行者123 更新时间:2023-11-28 13:27:01 29 4
gpt4 key购买 nike

我有一个 UIAlertController,在我的应用程序上显示了一个 textField。选择了 textField(标记在其中闪烁)并且在 textField 上设置了 .becomeFirstResponder。但出于某种原因,软键盘 没有显示。我打印了一个 bool 值 isFirstResponder,它返回了 false

我在某处读到它必须在 viewDidLoad 中触发,但在这种情况下这是不可能的,因为警报是通过从 中按下 button 来显示的viewDidLoad

之外的函数

这是我的代码:

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 似乎很奇怪。这是怎么回事?

最佳答案

有些情况下软键盘不会出现是正常的。

(a) 当有蓝牙键盘连接到真实设备时,或者

(b) 在设备模拟器中模拟硬件键盘时(菜单:Hardware->Keyboard->Connect Hardware Keyboard)。

我很早就知道这一点,但有时我仍然会感到困惑,为什么键盘不会出现,直到我记得检查(主要是在使用模拟器时)。它很容易被遗漏,因此请确保这里不是这种情况。

关于swift - 为什么不 becomeFirstResponder 在警报消息文本字段上触发软键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58180655/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com