iOS 单击手势与cell点击冲突

今天遇到单击手势与cell点击事件冲突,导致cell点击没有反应的问题,直接上代码!
解决方法如下:
OC语法:

UITapGestureRecognizer *tap=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapClick)];
   tap.delegate=self;   
   [self.view addGestureRecognizer:tap];

   #pragma mark-手势代理,解决和tableview点击发生的冲突
   -(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
      if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {//判断如果点击的是tableView的cell,就把手势给关闭了
         return NO;//关闭手势
      }//否则手势存在
      return YES;
    }
 let tap = UITapGestureRecognizer(target: self, action: #selector(removeView))
        self.addGestureRecognizer(tap)
        tap.delegate = self

    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
        
        if String(describing: touch.view!.classForCoder) == "UITableViewCellContentView" {
           return false
        } 
       else {
           return true
        }
    }

特别注意的是swift语法中的可选类型Optional,

String(describing: touch.view!.classForCoder) == "UITableViewCellContentView"

这里一定要用!,如果是

String(describing: touch.view?.classForCoder)

那么打印输出会是可选类型

Optional("UITableViewCellContentView")
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值