For example, I have a button that when the user tap on it, it will open a pop up scroll view from the bottom, which has a lengthy vertical content. If the user tried to swipe down when the scroll view content offset is at the top, I want to close the scroll view pop up by animating it flying to the bottom of the screen.
How can I detect that event? I know that I can get the event when scroll view did scroll using scrollViewDidScroll
function. But it didn't give me any info of whether the user is scrolling up or down. So I can't check like "when the offset.y
is 0 and user is still swiping .down
then close the popup". Please help. Thanks.
Try this in scrollViewDidScroll(_ scrollView: UIScrollView) method
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
and set this as global variable var previousScrollOffset: CGFloat = 0;
you can print and check if this is scolling up or down
hope this will give you the direction