UITableView:当 gestureRecognizers 激活时,scrollViewDidScroll 执行并且 contentOffset 跳转

UITableView: scrollViewDidScroll executes and contentOffset jumps when gestureRecognizers active

在 iOS 11 中的 UITableView(在 ViewController 中)上使用 gestureRecognizersUIPanGestureRecognizerUITapGestureRecognizer)时(Xcode 9.0,Swift 4),即使点击或平移到 left/right(没有 tableView 实际滚动)和 contentOffset 在短时间内跳跃(在 iPhone X 上跳跃 -140,在 iPhone 8 上跳跃 -116),然后 returns 恢复正常。 contentOffset 跳转在 UI 中不可见,但可以在控制台中打印。 (并启动一个动画,我已将其与某个偏移量相关联)。禁用 gestureRecognizers 可以解决问题,但除了上下滚动之外,我还需要它们来做其他手势(例如点击、平移到 left/right、...)

此问题不会发生在较旧的固件上(已在 iOS 10.3.1 上测试)。 scrollViewDidScroll 函数也不执行,contentOffset 也不更改。

如果有任何提示,我将不胜感激。

我发现禁用选项 Adjust Scroll View Insets(在 IB 或代码中),即使在一些类似的帖子中被标记为正确答案,也只是等式的一部分。

UITableView 上的一些约束没有正确设置,这导致了错误。 正确设置所有约束(或完全删除它们)并禁用上述选项为我修复它。