【问题标题】:How to have multiple scrollViews in one scrollView如何在一个滚动视图中有多个滚动视图
【发布时间】:2012-05-23 16:08:14
【问题描述】:

我想要一个启用水平滚动的大滚动视图。在这个滚动视图中,我想拥有(比方说)5 个可以垂直滚动的其他滚动视图。

谁能指出我如何处理触摸事件的正确方向?

我正在考虑制作两个手势识别器(1 个用于点击,1 个用于平移)并使用 X 和 Y 值的增量来计算水平或垂直滑动。检查方向后,我将大滚动条或其中一个滚动条设置为启用或禁用。这是正确的方法吗?


编辑: 我没有使用上面的方法,而是通过将 5 个滚动视图添加为大滚动视图的子视图,将我的 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);

【问题讨论】:

    标签: iphone touch scrollview gesture


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      为此,您只需制作 1 个水平滚动视图,在其中添加其他垂直滚动视图作为子视图。要处理的大事是当基本滚动视图要水平滚动时,您应该禁用垂直滚动视图上的滚动。

      你可以听:

      - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
      

      当这种情况发生时,您可以禁用垂直滚动视图上的滚动

      然后您可以在下面启用向后滚动:

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

      【讨论】:

        【解决方案3】:

        我认为你不需要做任何花哨的事情。

        see this question

        在链接到该问题的示例中,如果您禁用缩放和弹跳,您应该会看到它可以正常工作。

        【讨论】:

          【解决方案4】:

          有一个名为“Pulse”的应用程序使用垂直表格视图,其中每个表格视图单元格都可以水平滚动并包含另一个表格视图。这负责缓存和 UI 事件。 您需要找到一个示例并根据您的目的对其进行评估(可能将默认实现旋转 90 度)

          How to recreate a Pulse-like UI?

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-08-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多