UIScrollView 方向来自 scrollViewWillBeginDecelerating
Posted
技术标签:
【中文标题】UIScrollView 方向来自 scrollViewWillBeginDecelerating【英文标题】:UIScrollView direction from scrollViewWillBeginDecelerating 【发布时间】:2011-05-06 09:01:42 【问题描述】:是否可以在方法中检索UIScrollView
滚动到的方向;
-(void) scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
如果可以,如何实现?
【问题讨论】:
【参考方案1】:你可以试试这样的:
- (void)scrollViewDidScroll:(UIScrollView *)sender
xCoord = scrollview.contentOffset.x;
-(void) scrollViewWillBeginDecelerating:(UIScrollView *)sender
if (xCoord > scrollView.contentOffset.x)
//RIGHT
else if (xCoord < scrollView.contentOffset.x)
//LEFT
保存开始滚动时scrollViews contentOffset的x坐标,然后在scrollViewWillBeginDecelerating中比较
【讨论】:
Jamie 的回答在启用分页并且用户轻弹并且 UIScrollView 弹回原始位置的情况下不起作用。在这种情况下,contentOffset 有时会如下所示:15,20,18,15,10,...所以您计算的初始方向将是错误的。【参考方案2】:在分页的情况下试试这个
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
_xCoord = scrollView.contentOffset.x;
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
if (_xCoord > scrollView.contentOffset.x)
//right
else if (_xCoord < scrollView.contentOffset.x)
//LEFT
【讨论】:
【参考方案3】:不直接回答问题,但可能对某些人有用——检索UIScrollView
将减速的方向:
func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView)
let point = scrollView.panGestureRecognizer.translation(in: scrollView)
if point.x < 0
// Will decelerate to the right
else if point.x > 0
// Will decelerate to the left
【讨论】:
以上是关于UIScrollView 方向来自 scrollViewWillBeginDecelerating的主要内容,如果未能解决你的问题,请参考以下文章
UIScrollView - 添加子视图,使其水平和垂直居中
将选择器添加到动态添加的 UIScrollView 视图上的按钮
UIScrollview 停留在不正确的 contentOffset(-20 px,而不是 0px)
带有 UIButtons 的 UIScrollView - 当按钮开始触摸时,滚动视图不会滚动
对于 UIScrollview,我如何使用自己的 panGestureRecognizer 但允许 scrollView 使用其识别器进行反弹?