iCarousel 仅通过用户交互滚动到一个方向
Posted
技术标签:
【中文标题】iCarousel 仅通过用户交互滚动到一个方向【英文标题】:iCarousel scroll to one direction only through user interaction 【发布时间】:2013-12-19 04:16:58 【问题描述】:我已经在我的应用中实现了 iCarousel。我想让 iCarousel 通过用户迭代滚动到一个方向。
我的场景是一个视图列表,其中用户只能通过在当前视图上回答问题来转到下一个(右侧的那个),所以在他回答之前他不能转到下一个.一旦他回答,我就会以编程方式滚动到下一个项目。我仍然希望用户能够向后滚动以前的视图(向左)。
现在我将scrollEnabled
设置为NO
,因此用户根本无法滚动。
我想用carouselWillBeginDragging:
做点什么,并根据他滚动的方向将scrollEnabled
更改为NO
,然后将carouselDidEndDragging:
上的scrollEnabled
设置回YES
,但我不能' t 找出一种可靠的方法来找出用户正在滚动的方向。
感谢任何建议或想法!
【问题讨论】:
【参考方案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。一旦加速,我将不得不重写加速/减速方法以停止滚动超过初始点。无论如何,我接受了你的回答,因为它的方向是正确的。谢谢。以上是关于iCarousel 仅通过用户交互滚动到一个方向的主要内容,如果未能解决你的问题,请参考以下文章