暂时阻止 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 滚动的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 使用 UiView 的 iCarousal

如何获取 iCarousel 当前可见视图?

阻止 iCarousel 标签滚动

iPad 上的 iCarousel 性能问题

在 Swift 的 iCarousel 中预览 UIWebView

在 iOS 的 icarousel 中使用 AsyncImageView 的问题