暂时阻止 iCarousel 滚动
Posted
技术标签:
【中文标题】暂时阻止 iCarousel 滚动【英文标题】:Temporarily keep iCarousel from scrolling 【发布时间】:2013-10-21 18:36:31 【问题描述】:有什么方法可以防止 iCarousel 滚动吗?比如,“锁屏”功能?当我按下一个按钮时,它应该停止滚动,当第二次按下该按钮时,它会再次开始滚动。有没有办法做到这一点?
【问题讨论】:
【参考方案1】:轮播使用平移手势识别器来控制滚动。如果您可以访问该手势,则可以禁用它(然后稍后再重新启用它)。
【讨论】:
经过实验和深思熟虑后,我发现这是我问题的解决方案。我编辑了 iCarousel.m 文件并添加了一个返回 panGesture 实例的函数。然后我使用此代码启用/禁用滚动: panGesture.enabled = NO; /panGesture.enabled = YES;. 你为什么要这样做? iCarousel.m 已经有一个变量 UIPangesturerecognizer,您可以从中创建一个公共属性并禁用/启用它。但这些解决方案都没有真正奏效。它仍然没有做任何事情@Katushai【参考方案2】:如果您只是想阻止用户与轮播交互,那么只需编写
[carousel setUserInteractionEnabled:NO];
要开始滚动,然后按下第一个按钮:
-(IBAction) spinButton:(id)sender
[carousel scrollByNumberOfItems:30 duration:10];
要停止滚动,然后按下第二个按钮:
-(IBAction) stopButton:(id)sender
[carousel scrollToItemAtIndex:[carousel currentItemIndex] animated:YES];
【讨论】:
第一个解决方案禁用了所有用户交互,包括任何屏幕上的按钮按下。第二种解决方案只是让轮播自动滚动浏览所有项目的方法。不过,谢谢大家的回答。这对我解决问题的研究非常有帮助。【参考方案3】:这可以通过:
[carousel setScrollEnabled:NO];
【讨论】:
这解决了我的问题,但我建议在下一行重新启用它:[carousel setScrollEnabled:YES];
否则至少在我的情况下它会导致一些错误。【参考方案4】:
您可以将此视图属性设置为 NO:
@property(nonatomic, getter=isUserInteractionEnabled) BOOL userInteractionEnabled
它将禁用轮播视图的触摸处理。
【讨论】:
这解决了我的问题,但除了不滚动之外,它还禁用了任何屏幕上的所有按钮。以上是关于暂时阻止 iCarousel 滚动的主要内容,如果未能解决你的问题,请参考以下文章