UIScrollView 中的 ICarousel

Posted

技术标签:

【中文标题】UIScrollView 中的 ICarousel【英文标题】:ICarousel in UIScrollView 【发布时间】:2013-08-22 15:29:04 【问题描述】:

我将 ICarousel 添加到我的 ios 项目中,它运行良好。我可以滚动图片。

然后我的视图包含另一个数据。所以我需要添加一个覆盖我所有视图的 UISCrollView。所以,现在,我的 ScrollView 中有一些元素(标签、文本视图和 ICarousel 的 UIVIew)。

ScrollView 工作正常。但是现在,ICarousel 不会切换图片。图片已加载(我看到第一张和第二张的一部分),但轮播不再起作用。

有人有同样的问题吗?如何解决?

编辑:

在@Wain 的建议之后,我尝试了这个:

- (void)viewDidLoad

    UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)];
    [self.view addGestureRecognizer:panRecognizer];

    panRecognizer.delegate = self;   

- (void)pan:(id)sender 
    NSLog(@"Pan");


- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
    return YES;

它不起作用,但我用断点检查,当我尝试水平滚动时它运行shouldRecognizeSimultaneouslyWithGestureRecognizer方法。

我哪里错了?

【问题讨论】:

你知道iCarousel使用UIGestureRecognizers还是touchesBegan 这里好像用到了:github.com/nicklockwood/iCarousel/blob/master/iCarousel/… 【参考方案1】:

看起来像是手势识别器之间的冲突,因为默认情况下,任何时候都只能激活一个。

不确定为什么您的滚动视图会涵盖所有内容,但您应该能够让您的控制器成为手势的代表并实现 gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer: 以允许它们同时识别。


UIScrollView 有一个 panGestureRecognizer 属性,您可以访问该属性以将自己设置为委托。

iCarousel 有点不同,因为它不会使手势公开可用,因此如果在滚动视图上设置委托不起作用,您可以编辑轮播(将自身设置为委托)以实现委托方法。

【讨论】:

我认为这可能是解决方案。我尝试了一些东西,但它不起作用。我编辑我的问题。谢谢 哪些 gettures 以otherGestureRecognizer 传递?您是否尝试将自己添加为其他手势(如滚动视图平移手势和轮播平移手势)的代表? 看来otherGestureRecognizer 总是空的。不好意思我是ios开发新手,有没有添加其他手势delegate的例子?

以上是关于UIScrollView 中的 ICarousel的主要内容,如果未能解决你的问题,请参考以下文章

iCarousel 上的缩放变换显示屏幕外的区域

iCarousel 中的分页

如何删除 iCarousel 中的重复项

icarousel 中的 SIGABRT 错误

Icarousel 内存泄漏中的泄漏

表格单元格视图中的 iCarousel 视图根本不滚动