【问题标题】:How to detect scrollView scrolling direction?如何检测scrollView的滚动方向?
【发布时间】:2015-10-05 04:03:36
【问题描述】:
我有一个UIScrollView 里面有一个UITableView 滚动视图应该水平滚动。我已经实现- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 在滚动视图结束其水平滚动时执行一些任务。但我的问题是,即使UITableView 垂直滚动也停止了,这个代表也会触发。那么我怎样才能检测到这个委托中的scrollview 水平滚动呢?
请帮帮我,
谢谢
【问题讨论】:
标签:
ios
objective-c
uitableview
uiscrollview
【解决方案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")
}
}