我想要启用一个水平滚动的大滚动视图。在这个scrollView中,我想(让我们说)其他5个滚动视图可以垂直滚动。
有人能指出我如何处理touchevents的正确方向吗?
我正在考虑制作两个手势识别器(1个用于点按,1个用于平移),并使用X和Y值的增量来计算水平或垂直滑动。在我检查方向后,我设置了大卷轴或其中一个滚动条来启用或禁用。这是正确的approuch吗?
编辑: 我没有使用上面的方法,只是通过添加5个scrollview作为大视图的子视图,我只能在一个大的scrollview(水平)中添加我的5个滚动视图(垂直滚动)。也许这段代码可以帮助某人,所以也提供了示例代码。
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);
答案 0 :(得分:1)
要做到这一点,您需要简单地制作1个水平滚动视图,在其中添加其他垂直滚动视图作为子视图。要处理的重要事情是当基本滚动视图要水平滚动时,您应该禁用垂直滚动视图上的滚动。
你可以听:
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
当发生这种情况时,您可以在垂直滚动视图中禁用滚动
在以下内容中,您可以启用向后滚动:
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
答案 1 :(得分:1)
您只需要创建一个可以水平滚动的主滚动视图,只需要使用addSubView
方法在主滚动视图上添加其他滚动视图。 iOS处理所有必要的事件以正确处理滚动。您只需要为每个滚动视图指定正确的content size
和frame
。
答案 2 :(得分:0)
答案 3 :(得分:0)
有一个名为“Pulse”的应用程序使用垂直表视图,其中每个表视图单元格可以水平滚动并包含另一个tableview。这会处理缓存和UI事件。 您需要找到一个示例,并根据您的目的对其进行评估(可能将默认实现旋转90度)