Как включить / отключить действие Alert? - PullRequest
0 голосов
/ 02 января 2019

Я хочу включить действие оповещения только в том случае, если пользователь ввел какой-то ввод с использованием следующих строк кода:

var alert: UIAlertController!

func alertBeitrageMelden(postId: String){

    self.alert = UIAlertController(title: "Beitrag melden", message: "Wieso möchtest du den Beitrag melden?", preferredStyle: .alert)

    let defaultAction = UIAlertAction(title: "Melden", style: .default) { (action) in

        if let text = self.alert.textFields?.first?.text, text.count > 0 {
            let postTime = Date().timeIntervalSince1970
            let ref = Database.database().reference().child("gemeldeteBeitraege").child(postId)
            ref.setValue(["postId": postId, "reason": text, "time": postTime])
            ProgressHUD.showSuccess("Der Beitrag wurde gemeldet", interaction: false)
        }
    }

    let cancelAction = UIAlertAction(title: "Abbrechen", style: .cancel) { (action) in
    }

    alert.addTextField { (textField) in
        textField.placeholder = ""
        textField.delegate = self
    }

    alert.addAction(defaultAction)
    alert.addAction(cancelAction)



    self.present(alert, animated: true) {
    }
}

Здесь я проверяю, набрал ли пользователь что-то:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

    if (textField.text?.count)! > 0 {
        self.alert.actions[0].isEnabled = true
    }else{
        self.alert.actions[0].isEnabled = false
    }

    return true;
}

Но он все еще не работает.

Заранее спасибо за помощь!

1 Ответ

0 голосов
/ 02 января 2019

Сделай это

textField.addTarget(self, action: #selector(self.textEdited), for: .editingChanged)

@objc func textEdited(_ textField:UITextField) {

    if textField.text!.count > 0 {
        alert.actions.first?.isEnabled = true
    }else{
        alert.actions.first?.isEnabled = false
    }

}

Добавьте эту строку, которая изначально отключит ее

 alert.actions.first?.isEnabled = false
 self.present(alert, animated: true)
...