如何检测用户何时尝试滑动 "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;
您可以打印并检查这是向上还是向下滚动
希望这能给你指明方向
例如,我有一个按钮,当用户点击它时,它会从底部打开一个弹出滚动视图,其中有一个很长的垂直内容。如果用户在滚动视图内容偏移量位于顶部时尝试向下滑动,我想通过动画使其飞到屏幕底部来关闭弹出的滚动视图。
如何检测该事件?我知道当滚动视图使用 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;
您可以打印并检查这是向上还是向下滚动
希望这能给你指明方向