首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在scrollViewWillBeginDragging中检测UIScrollView滚动的方向

在scrollViewWillBeginDragging中检测UIScrollView滚动的方向
EN

Stack Overflow用户
提问于 2012-12-26 22:49:06
回答 9查看 34.1K关注 0票数 22

我在谷歌上做得够多了,在发布这篇文章之前,我确实在stackoverflow中检查了像这样的帖子( Finding the direction of scrolling in a UIScrollView? )。我有一个动态数量的照片在一个iPhone应用程序,这是通过UIScrollView显示。在任何时候,我只有3张照片显示在滚动视图中。当我有,比如说4张照片,总共:第一张照片:显示在偏移320.0处第二张照片:显示在偏移320.0处第三张照片:显示在偏移640.0处

现在,当用户滚动到第四张照片时,滚动视图将重置为0.0偏移量。如果用户试图滚动“超越”第四张照片,滚动应该只在正确的方向上停止(这样用户就不会滚动“超越”)。但目前,用户“能够”滚动到最后一张照片之外;然而,我通过编程检测到了这一点&重置了偏移量。但它看起来并不整洁,因为用户会立即看到黑色背景。我想要检测到用户已经开始在scrollViewWillBeginDragging中滚动“右”(记住,滚动“左”即到“上一张”照片就可以了),这样我就可以停止向右滚动了。

我尝试过的:

  1. 尝试使用self.scrollView.panGestureRecognizertranslationInView不起作用,因为最初没有返回panGestureRecognizer实例(!),尽管UIScrollView API声称是这样。
  2. 可以在scrollViewDidEndDecelerating中检测到这一点,尽管它不能满足我的目的。

<代码>G212

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2012-12-27 22:01:49

谢谢你克里斯。最后,这就是对我有效的方法:

代码语言:javascript
代码运行次数:0
运行
复制
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    // Detect the scroll direction
    if (lastContentOffset < (int)scrollView.contentOffset.x) {
    ...
    }
}
票数 6
EN

Stack Overflow用户

发布于 2013-10-17 03:44:38

在检查滚动视图的panGestureRecognizer时,我在scrollViewWillBeginDragging中确定方向没有问题

代码语言:javascript
代码运行次数:0
运行
复制
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{ 
    CGPoint translation = [scrollView.panGestureRecognizer translationInView:scrollView.superview];

    if(translation.y > 0)
    {
        // react to dragging down
    } else
    {
        // react to dragging up
    }
}

当用户在禁止的方向上拖动时,我发现它在第一次拖动移动时取消滚动非常有用。

票数 28
EN

Stack Overflow用户

发布于 2017-02-28 17:27:51

Swift 3解决方案

1-添加UIScrollViewDelegate

2-添加此代码

代码语言:javascript
代码运行次数:0
运行
复制
func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView) {
    let actualPosition = scrollView.panGestureRecognizer.translation(in: scrollView.superview)
    if (actualPosition.y > 0){
        // Dragging down
    }else{
        // Dragging up
    }
}
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14042203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档