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

来源:互联网 发布:js ajax获取json文件 编辑:程序博客网 时间:2024/05/18 02:49
- (IBAction)showAlert:(id)sender {
  alert = [[UIAlertView alloc] initWithTitle:@"模态测试"
                                     message:@"请点击四周的模态区域我就消失"
                                    delegate:nil
                           cancelButtonTitle:@"确定"
                           otherButtonTitles:nil];
  [alert show];
  recognizerTap = [[UITapGestureRecognizer alloc] initWithTarget:self
                                                          action:@selector(handleTapBehind:)];
  
  [recognizerTap setNumberOfTapsRequired:1];
  recognizerTap.cancelsTouchesInView = NO; 
  [alert.window addGestureRecognizer:recognizerTap];
}
- (void)handleTapBehind:(UITapGestureRecognizer *)sender{
  if (sender.state == UIGestureRecognizerStateEnded){
    CGPoint location = [sender locationInView:nil];
    if (![alert pointInside:[alert convertPoint:location fromView:alert.window] withEvent:nil]){
      [alert.window removeGestureRecognizer:sender];
      [alert dismissWithClickedButtonIndex:0
                                  animated:YES];
    }
  }
}



弹出一个UIAlertView,然后点击窗口之外的区域来关闭UIALertView,上述代码在ios6.x及之前版本都有效,但是ios7之后这样的处理就达不到这样的效果了。。。

有木有人处理个这样的问题?ios7该如何处理?折腾了半天都实现了不。

实在不行最后就得来个自己实现UIAlertView类似的功能了。。。。。。


0 0
原创粉丝点击