【Objective-C】解决轻拍手势事件与 UITableView 的 UITableViewCell 点击事件冲突的问题

问题描述:UITableView 上添加了轻拍手势,手势时间里写了回收键盘,此时 UITableView 的 UITableViewCell 点击方法就和轻拍手势时间冲突,此时该怎么解决问题?

解决方法:

  1. 当前的 UIViewController 签协议 UIGestureRecognizerDelegate
  2. 写手势的代理方法
- (BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch {
    if([NSStringFromClass([touch.view class])isEqual:@"UITableViewCellContentView"]){
        return NO; // 当触碰到UITableView的UITableViewCell的UIContentView手势事件不响应
    }
    return YES;
}

问题追加:那如果 UITableView 上又嵌套一个 UICollectionView
怎么办,这个代理方法还有效吗?

解决方法:
这个代理方发还是有效的。

- (BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch {
    if([NSStringFromClass([touch.view class])isEqual:@"UITableViewCellContentView"] || [NSStringFromClass([touch.view class])isEqual:@"UIView"]){
        return NO; // 多加一个逻辑判断触碰到UIView时也让手势事件不响应
    }
    return YES;
}

这个代理方法是苹果官方提供的,大概也是考虑到开发者能遇到这样的小问题吧。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,294评论 4 61
  • 初时便如复宋墙 末了却如南柯梦 相约携手共乞巧 难料世艰空对月 明月本是思情物 奈何人心却不复 红豆南国生俱佳 节...
    流浪的苏三阅读 567评论 0 0
  • 前几天的上海国际电影节,下午在影城2号厅做参赛片《德兰》的放映,我组的多个妹子都跑去看了,原因只有一个,男主角,董...
    楼上老王的故事阅读 423评论 0 0
  • 此刻是2016年8月4号的最后一个小时,过完这最后的60分钟,我就来兰州整整一年的时间了! 说实话,我...
    王小熙阅读 1,902评论 2 3
  • 我知道这肯定是很矫情的一段话,但有时候我还是想发泄一下。 不知道为何,我开始觉得所谓的距离从一开始就在我和我认识的...
    葉白術阅读 295评论 0 0