Выход из алертконтроллера при нажатии вне его


#1

Создаю программно алерт контроллер и вызываю его через self.present(…).
Надо, чтоб при нажатии вне его он исчезал. Не подскажите, как реализовать?


#2

А смысл? алерт на то и алерт, чтобы выбрать действие, либо нажать отмену.

Либо сделайте кастомную вьюху с прозрачным бэкграундом и к ней прицепите ТАП … в которой запихните что-то типа(если у вас есть navigation controller):

_ = navigationController?.popViewController(animated: true )

либо если у вас вью поверх предыдущего:

dismiss(animated: true, completion: nil )


#3
let alert = UIAlertController(title: "Hello", message: nil, preferredStyle: .alert)
present(alert, animated: true) {
    alert.view.superview?.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.dismiss)))
}


#4
present(alert, animated: true) {
        self.alert.view.superview?.subviews.first?.isUserInteractionEnabled = true
        self.alert.view.superview?.subviews.first?.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.dismissAlertController)))
    }


@objc func dismissAlertController(){
    self.alert.dismiss(animated: true, completion: nil)
}

Так правильней и работает


#5

Тогда уж alert.view.superview?.subviews[1]


#6

тоже не понимаю смысла задачи. Алерт на то и алерт, чтобы блокировать экран и двигаться дальше только по нажатию кнопки.

Но если такая задача есть, то может лучше использовать не алерт, а что-то другое?