gpt4 book ai didi

ios - 仅当水平滚动至少是垂直滚动的 2 倍时,才开始在 UITableView 中水平滚动 UIScrollView

转载 作者:搜寻专家 更新时间:2023-11-01 05:38:20 25 4
gpt4 key购买 nike

我有一个 UITableView,它的每个单元格都包含一个只能水平滚动的 UIScrollView

只有当 x 上的速度至少比 y 上的速度快 2 倍时,我才会触发 UITableViewCell 的水平滚动。如果不是这种情况,则 UITableView 可以正常垂直滚动。

到目前为止,我已尝试子类化我的 UITableView 并覆盖 gestureRecognizerShouldBegin。但它不起作用,因为我意识到我的水平 UIScrollView(每个单元格顶部的一个)的 gestureRecognizerShouldBegin 首先被调用。

所以我决定在我的水平 UIScrollView 上覆盖 gestureRecognizerShouldBegin:

override func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
if gestureRecognizer is UIPanGestureRecognizer {
let velocity = (gestureRecognizer as! UIPanGestureRecognizer).velocityInView(tableView)

return fabs(velocity.x) > fabs(velocity.y) * 2
}

return super.gestureRecognizerShouldBegin(gestureRecognizer)
}

然后问题是我返回 false 然后 UITableView 不滚动(甚至没有调用 gestureRecognizerShouldBegin)。

我该如何解决这个问题?为什么会这样?

最佳答案

您是否尝试过将 ScrollView 上的 canCancelContentTouches 设置为 false?

关于ios - 仅当水平滚动至少是垂直滚动的 2 倍时,才开始在 UITableView 中水平滚动 UIScrollView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34144763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com