4

我正在构建一个由 aUITableView和 a组成的 iOS 布局UIScrollView。位于UIScrollView的表格单元格内UITableView,可以水平和垂直滚动。下图显示了这种情况。如果用户开始向下/向上滚动,UIScrollView则滚动事件应该触发setContentOffset表格视图,而不是setContentOffset滚动视图,而滚动视图的顶部将在虚线上(它是恒定的高度)。然后滚动触摸事件应该触发setContentOffset滚动视图,而不是表格视图。

在另一种情况下:当用户开始在表格视图上滚动时,它应该触发setContentOffset表格视图,直到滚动视图到达虚线。然后滚动视图应该处理setContentOffset.

我的问题是如何在一个滑动动作期间在表格视图和滚动视图之间传输触摸事件。

在此处输入图像描述

4

2 回答 2

2

这听起来像是您想要一些非常具体和自定义的情况之一。所以试图用手势识别器做一些聪明的事情是不够的。

主要问题是您可以控制手势识别器的方式,例如使用gestureRecognizer:shouldReceiveTouch:并且gestureRecognizerShouldBegin:仅影响手势的开始(或者对于新触摸,而不是正在进行的触摸),但是您希望单个正在进行的手势在控制每个视图之间进行转换。因此,出于这个原因,我认为您需要在整个屏幕上放置一个大型透明视图,并在其上放置一个平移手势识别器,并在您的 handlePan 方法中决定您要调整哪个视图,然后setContentOffset直接在该视图上调用。您可以使用平移识别器的翻译和现有的内容偏移量来计算新的。我知道这不是很优雅,但我想不出另一种方法来达到你想要的效果。

于 2013-09-10T01:41:29.617 回答
0

我不确定这是否可行,但您可以尝试执行以下操作:

  1. 选项

    self.scrollView.panGestureRecognizer = self.tableView.panGestureRecognizer;

  2. 选项

    [self.scrollView addGestureRecognizer:self.tableView.panGestureRecognizer];

  3. 选项

    [self.tableView.panGestureRecognizer requireGestureRecognizerToFail:self.scrollView.panGestureRecognizer];
    
于 2013-09-10T20:52:01.677 回答