【问题标题】:Conflictive scroll on UITableView within UIScrollViewUIScrollView 中 UITableView 上的冲突滚动
【发布时间】:2015-05-28 10:33:45
【问题描述】:

我在一个UIScrollView(pagingEnable = YES) 中包含三个UITableViews,

层次结构如下:

                                 +--visible area--+  ---+
+---------`UIScrollView`---------+---------------+|  --+|
| +-------------+ +-------------+|+-------------+||  -+||
| |      0      | |      1      |||      2      |||   |||
| |`UITableView`| |`UITableView`|||`UITableView`|||  equal height
| |             | |             |||             |||   |||
| +-------------+ +-------------+|+-------------+||  -+||
+--------------------------------+---------------+|  --+| 
                                 +----------------+  ---+

UIScrollView(作为容器视图)将其contentSize.height 设置为适合屏幕高度,因此它只能水平滚动 方向。 每个 UITableView 都可以垂直滚动

问题是我不知道哪个视图(ScrollViewTableView)处理屏幕上的当前手指触摸。

当我在屏幕上滚动一条完美的垂直/水平路径以移动ScrollViewTableView 时,它工作正常。

虽然如果我从右下角滚动到左上角(如反斜杠“\”),它有时会水平移动 ScrollView,有时会垂直移动 TableView……更糟糕的是,两者都不移动,只是摇动 @ 987654332@ 可笑。 我只是无法按预期移动

我认为这是因为UIScrollViewUITableView 的ScrollView 有检测冲突。

这里我在 UIScrollViewDelegate 方法中添加了日志:

//in each ViewController handle a UITableView

    - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
            NSLog(@"TableView touched")
        }
    }

//in the ViewController handle the UIScrollView

    - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
            NSLog(@"ScrollView touched")
        }
    }

//as a side note...I set three ViewControllers(each holds one TableView) into a ContainerViewController(holds ScrollView)

他们一个接一个地随机退出……但几乎是在同一时间。

任何想法将不胜感激!

【问题讨论】:

  • 也许你应该尝试只在 UITableView 上启用用户交互,如果它在你的 UIScrollView 中居中,否则禁用它。
  • 你真的输入了层次结构吗?
  • @OutOfBounds 是的,一次肯定只有一个 UITableView 在中心,问题是表格滚动会打扰分页滚动。
  • @refdev 如果您的意思是我是否通过键入...来创建层次结构...是

标签: ios objective-c uitableview uiscrollview uigesturerecognizer


【解决方案1】:

为整个视图添加UIPanGestureRecognizer。存储初始位置,从当前位置,计算是水平移动还是垂直移动。 (如果 x 坐标变化大于水平,如果 y,则垂直。)

一旦方向明确,将移动转发到表格视图或滚动视图。

或者更好的解决方案:使用表格视图控制器并添加边缘滑动手势来切换,就像它们在选项卡控制器中一样。

【讨论】:

  • 无法处理从平移手势转发方向到移动我的滚动视图/表格视图的延迟......现在使用 pageViewController 结束它(其中还有一个滚动视图,我可以滚动以更顺畅的方式......想知道为什么)。
  • @sharky101 你能更详细地解释一下你是如何解决你的问题的吗?
猜你喜欢
  • 2017-02-12
  • 2013-05-31
  • 1970-01-01
  • 1970-01-01
  • 2011-03-26
  • 1970-01-01
  • 1970-01-01
  • 2013-08-01
  • 2019-11-07
相关资源
最近更新 更多