Почему не стал срабатывать программная клавиатураFirstResponder на предупреждающем сообщении - PullRequest
0 голосов
/ 01 октября 2019

У меня есть 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, когда я только установил его. Что здесь происходит?

1 Ответ

1 голос
/ 01 октября 2019

Бывают ситуации, когда программная клавиатура не работает.

(a), когда к реальному устройству подключена клавиатура Bluetooth, или

(b), когдааппаратная клавиатура моделируется в симуляторе устройства (меню: Оборудование-> Клавиатура-> Подключить аппаратную клавиатуру).

Я знаю это давно, но иногда мне случается так, что я запутываюсь, почему клавиатура не поднимается, пока я не помню, чтобы проверить (в основном при использовании симулятора). Это легко пропустить, поэтому убедитесь, что это не так.

...