iOS点击手势响应冲突处理办法

来源:互联网 发布:reduce python 编辑:程序博客网 时间:2024/04/24 15:14
  • 控件过滤:有些控件需要响应手势有些不需要
 UITapGestureRecognizer  *tapGr = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(hideKeyboardAction)];  tapGr.delegate = self; //设置代理 [self.view addGestureRecognizer:tapGr];

代理方法中过滤:

#pragma mark tableView和手势冲突的解决方法- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{    if ([touch.view isKindOfClass:[UITextField class]]){        return NO;    }    // 若为UITableViewCellContentView(即点击了tableViewCell),则不截获Touch事件   // NSLog(NSStringFromClass([touch.view class]));    if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {        return NO;    }    return YES;}
  • collectionViewCell点击不需要响应手势,点击其他需要收键盘
    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {    //不获取事件    if (touch.view != self.collectionView){        return NO;    }    return YES;}
- (void)hideKeyboardAction{    [self.view endEditing:YES];}
0 0
原创粉丝点击