2013-10-21 48 views
1

有没有办法阻止iCarousel滚动?就像一个“锁屏”功能?当我按下一个按钮时,它应该停止滚动,当再次按下该按钮时,它将再次开始滚动。有没有办法做到这一点?暂时让iCarousel不滚动

回答

3

传送带使用平移手势识别器来控制滚动。如果您可以访问该手势,则可以将其禁用(然后再重新启用它)。

+1

经过实验和深思熟虑,我发现这是我的问题的解决方案。我编辑了iCarousel.m文件并添加了一个返回panGesture实例的函数。然后我用这段代码来启用/禁用滚动:panGesture.enabled = NO;/panGesture.enabled = YES ;. – Katushai

+0

你为什么要那样做? iCarousel.m已经有了一个变量UIPangesturerecognizer,你可以从中创建一个公共属性并禁用/启用它。但非这些解决方案真的有效。它仍然没有做任何事情@Katushai –

0

可以将此视图属性设置为NO:

@property(nonatomic, getter=isUserInteractionEnabled) BOOL userInteractionEnabled 

这将禁用旋转视图的触摸操作。

+0

这解决了我的问题,但除了不滚动,它还禁用了任何屏幕上的所有按钮。 – Katushai

0

如果你只是想防止用户用传送带进行交互,然后简单地写

[carousel setUserInteractionEnabled:NO];

要开始滚动,则第一个按钮被按下写:

-(IBAction) spinButton:(id)sender { 

    [carousel scrollByNumberOfItems:30 duration:10]; 

} 

要停止滚动然后按下第二个按钮写入:

-(IBAction) stopButton:(id)sender { 

[carousel scrollToItemAtIndex:[carousel currentItemIndex] animated:YES];  
} 
+0

第一种解决方案禁用所有用户交互,包括在任何屏幕上按下按钮。第二种解决方案只是让传送带自动滚动所有项目的一种方法。不过谢谢大家的回答。这对我解决问题的研究都非常有帮助。 – Katushai

1

这是可能的:

[carousel setScrollEnabled:NO]; 
+0

这没有解决我的问题 – Katushai

+0

这解决了我的问题,但我建议在下一行重新启用它:'[carousel setScrollEnabled:YES];否则至少在我的情况下,它会导致一些错误。 –