我有一个列表,当列表向上滚动时,我希望隐藏工具栏和选项卡栏。
我尝试使用以下代码来检测滚动:
.gesture(
DragGesture()
.onChanged { value in
if value.translation.height > 0 {
print("Scroll down")
} else {
print("Scroll up")
}
}
.onEnded{ value in
print("ended")
}
)
这个功能有时会出现间歇性问题,只有约80%的时间可以正常工作,它似乎只能在我缓慢滑动或者直接把手指放在屏幕上然后滚动时检测到滚动。否则什么也不会发生。此外,onEnded
在这里从未触发。
我还尝试了以下方法:
.gesture(
DragGesture(minimumDistance: 0, coordinateSpace: .local)
.onChanged { value in
print(value.translation.height)
if value.translation.height > 0 {
print("Scroll down")
} else {
print("Scroll up")
}
}
.onEnded{ value in
print("ended")
print(value.location.y)
}
)
这会捕获我所有的滚动事件,非常棒。但是
onEnded
也会触发,问题在于我的列表并没有实际滚动。我感到困惑,希望知道用户向上滚动、向下滚动的距离以及尽可能地了解用户何时到达列表的顶部。
DragGesture
的? - Kai Zheng