如何检测用户何时尝试滑动“过去的 UIScrollView 内容偏移”?
Posted
技术标签:
【中文标题】如何检测用户何时尝试滑动“过去的 UIScrollView 内容偏移”?【英文标题】:How can I detect when the user tried to swipe "past UIScrollView content offset"? 【发布时间】:2018-02-23 03:00:33 【问题描述】:例如,我有一个按钮,当用户点击它时,它会从底部打开一个弹出的滚动视图,其中有很长的垂直内容。如果用户在滚动视图内容偏移位于顶部时尝试向下滑动,我想通过动画使其飞到屏幕底部来关闭滚动视图弹出窗口。
如何检测该事件?我知道当滚动视图使用scrollViewDidScroll
函数滚动时我可以得到事件。但它没有给我任何关于用户是向上还是向下滚动的信息。所以我不能检查“当offset.y
为0 并且用户仍在刷.down
然后关闭弹出窗口”。请帮忙。谢谢。
【问题讨论】:
当滚动视图被拉下超过顶部时你不会得到一个负偏移量吗? @rmaddy 哦等等。好的,让我试试看。 【参考方案1】:在 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;
您可以打印并检查这是向上还是向下滚动
希望这能给你指明方向
【讨论】:
谢谢!这让我更清楚地了解它是如何工作的。现在为什么我之前没有考虑保存以前的滚动偏移量...#facepalm以上是关于如何检测用户何时尝试滑动“过去的 UIScrollView 内容偏移”?的主要内容,如果未能解决你的问题,请参考以下文章
检测用户何时点击 UIDatePicker 中的选择指示器?
如何在 Jetpack compose 中检测 HorizontalPager 中的滑动?