iOS UITableViewCell需要按两次才能调用didSelectRowAtIndexPath

kra*_*vil 7 objective-c uitableview ios

我有一个UITableView,有时需要你触摸它两次才能选择一个单元格.

更多细节:

  • 只有在桌子一直向上滚动或完全向下滚动之后才需要进行两次触摸.
  • 只有第二次触摸甚至打电话didSelectRowAtIndexPath.
  • 当桌子以自然的"向上滚动位置"打开时,只需轻轻一按即可选择单元格.
  • 如果你只是滚动一点(不是一直向下/向上),单元格只需轻轻一按即可选择.
  • 如果单元格没有填满整个表格并且不需要滚动,那么它可以正常工作.
  • 一直到顶部或底部,你必须触摸两次.

我有一种感觉,第一次触摸实际上是使UITableViewCells可选择或以某种方式激活表.

我检查过的事情:

  • 我的代码肯定不会didDeselectRowAtIndexPath在任何地方调用.
  • 没有UIGestureRecognizers使用setCancelsTouchesInView:.

桌子上的其他设置:

self.tableView.scrollEnabled = YES;
self.tableView.showsVerticalScrollIndicator = NO;
self.tableView.bounces = NO;
self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
Run Code Online (Sandbox Code Playgroud)

是什么导致了这个?


更新

奇怪的是,设置self.tableView.bounces = YES;修复了问题.

如果有人有更好的答案,我仍在调查根本原因.显然我希望桌子不要弹跳,但如果它需要关键功能则不行.

小智 8

可能是你实现了didDeselect而不是didSelect?