如何通过单击iOS中的警报外部来关闭警报?

理解和实现UIAlert可能会很棘手,特别是如果您不熟悉iOS开发,在这篇文章中,我们将看到当用户在警报框外点击时如何解除警报。

对于此演示,我们将使用UIAlert类,以使用要显示的消息以及可供选择的操作来配置警报和操作表。用所需的动作和样式配置警报控制器后,请使用present(_:animated:complete :)方法显示警报控制器。UIKit在您的应用程序内容上以模态显示警报和操作表。

您可以阅读有关它的更多信息:https : //developer.apple.com/documentation/uikit/uialertcontroller

所以我们开始吧

步骤1-打开Xcode并创建一个单一视图应用程序,并将其命名为UIAlertSample。

步骤2-在Main中。故事板添加一个按钮,并创建@IBAction并将其命名为showAlert,

@IBAction func showAlert(_ sender: Any) { }

因此,基本上,当我们点击按钮时,将显示警报,而当用户在警报外部点击时,警报将被消除。

步骤3-内部按钮动作showAlert,首先如下创建UIAlert对象

let uialert = UIAlertController(title: "WELCOME", message: "Welcome to my tutorials, tap outside to dismiss the alert", preferredStyle: .alert)

步骤4-呈现警报,并在其完成时添加一个选择器,如下所示,

self.present(uialert, animated: true, completion:{
   uialert.view.superview?.isUserInteractionEnabled = true
   uialert.view.superview?.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.dismissOnTapOutside)))
})

步骤5-添加选择器功能,

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

步骤6-运行应用程序,

import UIKit
class ViewController: UIViewController {
   override func viewDidLoad() {
      super.viewDidLoad()
   }
   @IBAction func showAlert(_ sender: Any) {
      let uialert = UIAlertController(title: "WELCOME", message: "Welcome to my tutorials, tap outside to dismiss the alert", preferredStyle: .alert)
      self.present(uialert, animated: true, completion:{
      uialert.view.superview?.isUserInteractionEnabled = true
      uialert.view.superview?.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.dismissOnTapOutside)))
      })
   }
   @objc func dismissOnTapOutside(){
      self.dismiss(animated: true, completion: nil)
   }
}