iOS之UIAlertView点击窗口之外区域关闭

原文地址:传送门

弹出一个UIAlertView,然后点击窗口之外的区域来关闭UIALertView,代码如下:

[objc]  view plain  copy
  1. - (IBAction)showAlert:(id)sender {  
  2.   
  3.   alert = [[UIAlertView alloc] initWithTitle:@"测试"  
  4.                                      message:@"点击四周的区域我就消失"  
  5.                                     delegate:nil  
  6.                            cancelButtonTitle:@"确定"  
  7.                            otherButtonTitles:nil];  
  8.   [alert show];  
  9.   recognizerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapBehind:)];  
  10.   
  11.   [recognizerTap setNumberOfTapsRequired:1];  
  12.   recognizerTap.cancelsTouchesInView = NO;   
  13.   [[UIApplication sharedApplication].keyWindow addGestureRecognizer:recognizerTap];  
  14. }  
  15.   
  16. - (void)handleTapBehind:(UITapGestureRecognizer *)sender {  
  17.   if (sender.state == UIGestureRecognizerStateEnded){  
  18.     CGPoint location = [sender locationInView:nil];  
  19.     if (![alert pointInside:[alert convertPoint:location fromView:alert.window] withEvent:nil]){  
  20.       [alert.window removeGestureRecognizer:sender];  
  21.       [alert dismissWithClickedButtonIndex:0 animated:YES];  
  22.     }  
  23.   }  
  24. }  

猜你喜欢

转载自blog.csdn.net/qq_28379951/article/details/79305853