如何检测用户何时尝试滑动 "past UIScrollView content offset"?

How can I detect when the user tried to swipe "past UIScrollView content offset"?

例如,我有一个按钮,当用户点击它时,它会从底部打开一个弹出滚动视图,其中有一个很长的垂直内容。如果用户在滚动视图内容偏移量位于顶部时尝试向下滑动,我想通过动画使其飞到屏幕底部来关闭弹出的滚动视图。

如何检测该事件?我知道当滚动视图使用 scrollViewDidScroll 函数滚动时我可以获得事件。但它没有给我任何关于用户是向上滚动还是向下滚动的信息。所以我无法检查 "when the offset.y is 0 and user is still swiping .down then close the popup"。请帮忙。谢谢

在 scrollViewDidScroll(_ scrollView: UIScrollView) 方法中试试这个

let scrollDiff = scrollView.contentOffset.y - self.previousScrollOffset

let absoluteTop: CGFloat = 0;
let absoluteBottom: CGFloat = scrollView.contentSize.height - scrollView.frame.size.height;

let isScrollingDown = scrollDiff > 0 && scrollView.contentOffset.y > absoluteTop
let isScrollingUp = scrollDiff < 0 && scrollView.contentOffset.y < absoluteBottom
self.previousScrollOffset = scrollView.contentOffset.y

并将其设置为全局变量 var previousScrollOffset: CGFloat = 0;

您可以打印并检查这是向上还是向下滚动

希望这能给你指明方向