iosuialertviewuialertcontroller

How to dismiss UIAlertController when tap outside the UIAlertController?


How to dismiss UIAlertController when tap outside the UIAlertController?

I can add a UIAlertAction of style UIAlertActionStyleCancel to dismiss the UIAlertController.

But I want to add the function that when user tap outside the UIAlertController the UIAlertController will dismiss. How to do that? Thank you.


Solution

  • Add a separate cancel action with style UIAlertActionStyleCancel. So that when user taps outside, you would get the callback.

    Obj-c

    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Alert Title" message:@"A Message" preferredStyle:UIAlertControllerStyleActionSheet];
    [alertController addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
     // Called when user taps outside
    }]];
    

    Swift 5.0

    let alertController = UIAlertController(title: "Alert Title", message: "A Message", preferredStyle: .actionSheet)             
    alertController.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: { 
        action in
             // Called when user taps outside
    }))