UICollectionViewCell,UITableViewCell点击与tap事件冲突解决方案

当界涉及到到点击屏幕隐藏键盘等需要在self.view上添加单击手势的时候,如果界面上有UICollectionView或者UITableView就会导致cell的select代理不响应

一、这时候如果我们想点击整个collectionView都不响应手势,可以进行如下操作:

 tapGesture.delegate = self;

#pragma mark -UIGestureRecognizerDelegate

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {

    if ([touch.view isDescendantOfView:collectionView]) {

            return NO;

    }

    return YES;

}

如果我们想只有点击cell时不响应,点击collectionView的其他区域依旧响应手势,可以这样设置:

tapGesture.delegate = self;

#pragma mark -UIGestureRecognizerDelegate

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {

    if ([touch.view isDescendantOfView:collectionView]) {

        if ([collectionView indexPathForItemAtPoint:[touch locationInView:collectionView]]) {

            return NO;

        }

    }

    return YES;

}

也就是比UICollectionView多了一个判断,这个判断就是想知道是否点击区域在cell上。

如果我们想点击UITableViewCell响应手势,可以这样设置:

tapGesture.delegate = self;

#pragma mark - UIGestureRecognizerDelegate

 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch  {

      if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {

          return NO;

      }

      return  YES;

  }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值