【发布时间】:2021-01-24 17:43:26
【问题描述】:
我有一个 UITableView。每一行都是可点击的并触发一个动作(点击会在主线程上更新单元格内容,然后在后台线程中的 CoreData 中添加一些内容)。
我正在使用
func tableView(_ tableView: UITableView, didHighlightRowAt indexPath: IndexPath)
在UITableViewDelegate 中检测点击,因为根据我的经验,使用这种方法点击行比使用didSelectRowAt 更具反应性,并且我希望用户能够在同一行上按顺序快速点击多次,就像一个计数。
但现在我遇到了一个问题,有时只是滚动表格视图会意外触发点击操作。
就好像手指第一次在开始滚动手势时触摸屏幕一样,单元格注册的是点击而不是“开始滚动”。 UITableViewCell 现在有点太敏感了。
我想也许我可以停止使用didHighlightRowAt,而是在每个 UITableViewCell 上添加一个手势识别器,并且只有在识别器没有看到滚动但感觉不对时才触发操作。
达到某种中间立场的方法是什么?
我的意思是,让单元格保持反应性,但避免在用户刚刚开始滚动时触发点击。也许我在这种情况下使用didHighlightRowAt 会出错?
编辑:它甚至发生在应用程序启动后。我只是第一次能够重现它:如果手指在开始滚动手势之前停留在单元格上一小段时间,就会发生这种情况。我猜这是有道理的:触摸该行并突出显示,即使手指没有从屏幕上抬起。我没有注意到,因为我总是快速向上滑动滚动,我的手指从不停留在屏幕上。
【问题讨论】:
标签: ios swift uitableview