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

  • 控件过滤:有些控件需要响应手势有些不需要
 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];
}

你可能感兴趣的:(iOS)