如何检测scrollView的滚动方向?
Posted
技术标签:
【中文标题】如何检测scrollView的滚动方向?【英文标题】:How to detect scrollView scrolling direction? 【发布时间】:2015-10-05 04:03:36 【问题描述】:我有一个UIScrollView
里面有一个UITableView
滚动视图应该水平滚动。我已经实现- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
在滚动视图结束其水平滚动时执行一些任务。但我的问题是,即使UITableView
垂直滚动也停止了,这个代表也会触发。那么我怎样才能检测到这个委托中的scrollview
水平滚动呢?
请帮帮我, 谢谢
【问题讨论】:
【参考方案1】:检查这些委托方法
CGPoint _lastContentOffset;
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
_lastContentOffset = scrollView.contentOffset;
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
if (_lastContentOffset.x < (int)scrollView.contentOffset.x)
NSLog(@"Scrolled Right");
else if (_lastContentOffset.x > (int)scrollView.contentOffset.x)
NSLog(@"Scrolled Left");
else if (_lastContentOffset.y < scrollView.contentOffset.y)
NSLog(@"Scrolled Down");
else if (_lastContentOffset.y > scrollView.contentOffset.y)
NSLog(@"Scrolled Up");
【讨论】:
【参考方案2】:Swift 版本:
var _lastContentOffset: CGPoint!
func scrollViewWillBeginDragging(_ scrollView: UIScrollView)
_lastContentOffset = scrollView.contentOffset
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView)
if _lastContentOffset.x < scrollView.contentOffset.x
NSLog("Scrolled Right")
else if _lastContentOffset.x > scrollView.contentOffset.x
NSLog("Scrolled Left")
else if _lastContentOffset.y < scrollView.contentOffset.y
NSLog("Scrolled Down")
else if _lastContentOffset.y > scrollView.contentOffset.y
NSLog("Scrolled Up")
【讨论】:
在代码中添加一些解释总是好的 :)以上是关于如何检测scrollView的滚动方向?的主要内容,如果未能解决你的问题,请参考以下文章