У меня есть UIAlertController с показом textField
в моем приложении. textField
выбран (маркер мигает в нем), а .becomeFirstResponder
установлен на textField
. Но по какой-то причине soft-keyboard
не отображается. Я напечатал логическое значение isFirstResponder
, и оно вернулось false
.
Я где-то читал, что он должен срабатывать в viewDidLoad
, но в этом случае это невозможно, так как предупреждение отображается нажатием button
на function
, который находится за пределами 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, когда я только установил его. Что здесь происходит?