【问题标题】:iCarousel scroll to one direction only through user interactioniCarousel 仅通过用户交互滚动到一个方向
【发布时间】:2013-12-19 04:16:58
【问题描述】:

我已经在我的应用中实现了 iCarousel。我想让 iCarousel 通过用户迭代滚动到一个方向。

我的场景是一个视图列表,其中用户只能通过在当前视图上回答问题来转到下一个(右侧的那个),所以在他回答之前他不能转到下一个.一旦他回答,我就会以编程方式滚动到下一个项目。我仍然希望用户能够向后滚动以前的视图(向左)。

现在我将scrollEnabled 设置为NO,因此用户根本无法滚动。

我想用carouselWillBeginDragging: 做点什么,并根据他滚动的方向将scrollEnabled 更改为NO,然后将carouselDidEndDragging: 上的scrollEnabled 设置回YES,但我不能' t 找出一种可靠的方法来找出用户正在滚动的方向。

感谢任何建议或想法!

【问题讨论】:

    标签: ios objective-c cocoa-touch icarousel


    【解决方案1】:

    一点谷歌魔法,它向我展示了你问题的答案。

    如果您的问题是“如何检测滚动的方向?”好吧,它已经回答了

    这里是link

    编辑::

    iCarousel.h 显示- (void)didPan:(UIPanGestureRecognizer *)panGesture;

    然后创建 iCarousel 的子类。

    iCarouselsubclass.m:

    -(void)didPan:(UIPanGestureRecognizer *)panGesture{
         // check direction here using values for super didPan method
    
         [super didPan:panGesture]; // do not call if you dont want to scroll the view
    }
    

    【讨论】:

    • 我认为这不能回答我的问题。我的问题是关于iCarousel,而不是 UIScrollView。 iCarousel 没有继承 UIScrollView,我相信它实现了它自己的加速和减速机制。
    • 感谢您的链接,我在查看文档时完全忽略了 carouselCurrentItemIndexDidChange: 委托方法。它有助于识别它是向左还是向右滚动,但根据我的要求,我需要完全阻止用户开始向右滚动,同时仍然允许向左滚动。
    • @rantunes 好吧,我查看了 iCarousel 类,没有看到任何可以提供您需要的方法。对我来说,解决方案是显示 didPan 方法,然后将 iCarousel 子类化并覆盖 didPan
    • @rantunes 如果你真的想检测 iCarousel 的滚动前,我添加了一个替代方法
    • 原来我不必再实现该功能了。我昨天尝试了您建议的相同方法。它在您滚动时起作用。问题是,如果用户向左滚动一点,我仍然希望他能够向右滚动直到初始位置,但不能超过那个位置。问题是通过将该位向右移动,它会加速 iCarousel。一旦加速,我将不得不重写加速/减速方法以停止滚动超过初始点。无论如何,我接受了你的回答,因为它的方向是正确的。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2011-11-28
    • 2012-07-22
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多