iOS UITableViewCell需要按两次来调用didSelectRowAtIndexPath
我有一个UITableView有时需要你触摸两次来select一个单元格。
更具体的:
- 只有在表格一直向上滚动或者一直向下滚动之后,才需要两次触摸。
- 只有第二次触摸甚至调用
didSelectRowAtIndexPath
。 - 当桌子以自然的“向上滚动位置”打开时,单元格确实可以通过一次触摸来select。
- 如果只是滚动一点点(不是全部向下/向上),单元格将只需一次触摸即可进行select。
- 如果单元格不填充整个表格,并且不需要滚动,则可以正常工作。
- 一直到顶部或底部,你必须触摸两次。
我有一种感觉,第一个触摸是真正使UITableViewCells可选或以某种方式激活表。
我已经检查过的东西:
- 我的代码绝对不会在任何地方调用
didDeselectRowAtIndexPath
。 - 没有
UIGestureRecognizers
正在使用setCancelsTouchesInView:
桌子上的其他设置:
self.tableView.scrollEnabled = YES; self.tableView.showsVerticalScrollIndicator = NO; self.tableView.bounces = NO; self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
这是什么原因造成的?
更新
奇怪的是,设置self.tableView.bounces = YES;
解决了这个问题。
如果有人有更好的答案,我仍在调查根本原因。 很显然,我希望桌子不要反弹,但是如果花费关键function,则不会。
可能是你执行didDeselect而不是didSelect?
迅速:
一旦一个细胞被挖掘,它也被选中,尝试取消它一被挖掘。
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { tableView.deselectRowAtIndexPath(indexPath, animated: false) }
其他要检查的内容还有delaysContentTouches
和canCancelContentTouches
属性。