UITableView点击Cell不触发didSelect 长按滑动后才触发问题求助
UITableView Cell点击didSelect不触发解决方法
- 排查Cell及其子视图上是否添加了
UITapGestureRecognizer:如果有添加,手势默认会拦截触摸事件导致didSelect无法响应,可设置手势的cancelsTouchesInView = false,或实现手势代理方法gestureRecognizer:shouldReceiveTouch:,判断触摸位置属于Cell时返回NO,不拦截事件。 - 检查属性配置是否正确:确认
tableView.allowsSelection为true,对应Cell的selectionStyle不是UITableViewCellSelectionStyleNone。 - 检查用户交互开关:确认Cell、Cell的contentView、UITableView以及所有上层父视图的
userInteractionEnabled属性均为true,任何一层关闭交互都会导致点击事件无法传递。 - 排查触摸方法重写逻辑:如果在Cell、父视图中重写了
touchesBegan:withEvent:、touchesEnded:withEvent:等系统触摸方法,必须调用super的对应方法,否则会阻断系统的点击事件传递链路,导致didSelect无法触发。 - 排查滚动类视图干扰:如果Cell内部添加了UIScrollView或其子类,可尝试将滚动视图的
delaysContentTouches属性设置为false,该属性开启时会默认延迟识别点击事件,优先判断是否为滚动操作,会导致普通点击无响应。 - 排查点击区域判断方法的重写逻辑:如果重写了
hitTest:withEvent:或pointInside:withEvent:方法,检查逻辑是否有误,错误的点击区域判断会导致系统判定点击不在Cell范围内,不会触发didSelect回调。
问题参考截图




内容的提问来源于stack exchange,提问作者Adarsh KC
相关产品推荐
相关产品推荐

