【发布时间】: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 都可以垂直滚动。
问题是我不知道哪个视图(ScrollView 或 TableView)处理屏幕上的当前手指触摸。
当我在屏幕上滚动一条完美的垂直/水平路径以移动ScrollView 或TableView 时,它工作正常。
虽然如果我从右下角滚动到左上角(如反斜杠“\”),它有时会水平移动 ScrollView,有时会垂直移动 TableView……更糟糕的是,两者都不移动,只是摇动 @ 987654332@ 可笑。 我只是无法按预期移动。
我认为这是因为UIScrollView 和UITableView 的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