iOS: textField на UIAlertController становится первым респондентом при наличии предупреждения - PullRequest
0 голосов
/ 06 февраля 2019

Я добавляю textField в UIAlertController с кодом ниже:

let anAlertController = UIAlertController(title:title, message:message, preferredStyle: .alert)
        weak var weakSelf = self

        let aDefaultAction = UIAlertAction(title:defaultTitle, style: UIAlertAction.Style.default) {
            UIAlertAction in

        anAlertController.addAction(aDefaultAction)
    }

    let aCancelAction = UIAlertAction(title:canceltTitle, style: UIAlertAction.Style.cancel) {
        UIAlertAction in
    }
    anAlertController.addAction(aCancelAction)

    anAlertController.addTextField { (textField) in
        textField.textAlignment = NSTextAlignment.center
        textField.text = "textFieldText"
        textField.delegate = self
        textField.resignFirstResponder()
    }
    self.present(anAlertController, animated: true, completion: nil)

Когда я пытаюсь представить UIAlertController, текстовое поле автоматически становится первым респондентом.Я не хочу, чтобы текстовое поле становилось первым респондентом при оповещении.Я погуглил и попробовал несколько способов избежать этого, но не повезло.Кто-нибудь может подсказать, как этого добиться?

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

попробуйте

anAlertController.addTextField { (textField) in
        textField.textAlignment = .center
        textField.text = "textFieldText"
        textField.delegate = self as? UITextFieldDelegate
        textField.isEnabled = false

    }
    self.present(anAlertController, animated: false, completion: {
        if let getTextfield  = anAlertController.textFields?.first{
                getTextfield.resignFirstResponder()
                getTextfield.isEnabled = true
        }

    })
0 голосов
/ 06 февраля 2019

Вы можете отключить UITexField на некоторое время, не может быть ответчик при появлении предупреждения:

anAlertController.addTextField { (textField) in
    textField.textAlignment = NSTextAlignment.center
    textField.text = "textFieldText"
    textField.isEnabled = false
    DispatchQueue.main.async { textField.isEnabled = true }
}
...