2012-05-23 104 views
3

我想使用水平滚动的一个大型滚动视图。在这个scrollView中,我希望有(可以说)5个可以垂直滚动的其他滚动视图。如何在一个滚动视图中使用多个滚动视图

任何人都可以指出我在正确的方向如何处理touchevents?

我在考虑制作两个gesturerecognizer(1代表龙头,1代表平移),并使用X和Y值的增量来计算水平或垂直滑动。在检查方向之后,我设置了大卷轴或其中一个卷轴来启用或禁用。这是正确的approuch?


编辑: 而不是使用我的方法上面我只是能够通过添加5个scrollviews作为一个大的子视图在一个大的滚动视图(水平)加我5个scrollviews(垂直滚动)的。也许这个代码也可以帮助某人,并提供示例代码。

for (int i = 0; i < NumberOfVerticalScrollers; i++) { 
     CGRect frame; 
     frame.origin.x = self.scrollView.frame.size.width * i; 
     frame.origin.y = 0; 
     frame.size = self.scrollView.frame.size; 

     UIScrollView *scroller = [[UIScrollView alloc] initWithFrame:frame]; 
     scroller.directionalLockEnabled = YES; 
     scroller.contentSize = CGSizeMake(320, 960); 
     [self.scrollView addSubview:scroller]; 
} 
self.scrollView.delegate = self; 
self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * NumberOfVerticalScrollers, self.scrollView.frame.size.height); 

回答

1

你只需要创建一个主滚动视图可以滚动水平,和刚需使用addSubView方法在主滚动视图上添加其他滚动视图。 iOS处理所有必要的事件以正确处理滚动。您只需分配每个滚动视图的正确content sizeframe

+0

感谢它的工作,将编辑我的答案与一些示例代码 – BarryK88

0

我不认为你需要做的任何幻想。

see this question

在链接到这个问题如果禁用变焦和弹跳,你应该看到,它只是工作的例子。

1

要做到这一点,你需要简单地做一个水平滚动视图作为子视图添加其他垂直滚动视图。要处理的最大问题是基本滚动视图将水平滚动时,应禁用垂直滚动视图上的滚动。

您可以倾听:

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 

,当出现你可以禁用滚动你的垂直scrollviews

而且在启用滚动回如下:

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 
0

有名为“Pulse”的应用程序使用垂直tableview,其中每个表视图单元格可以水平滚动并包含另一个tableview。这需要处理缓存和UI事件。 你需要找到这样一个例子,并对其进行评估你的目的(也许旋转90度的默认实现)

How to recreate a Pulse-like UI?

相关问题