在UIScrollView的UITableView – 如何使视图滚动,而不是本身的TableView?
想象一下,UIViewController中有一个UIScrollView。 在视图的顶部有一个UIImageView,一些UILabels和其他东西。 此外,还有一个UITableView,其内容是dynamic原型。 我附上一张照片来说明:
我没有在UITableView静态数量的单元格,所以它可以滚动。 我的问题是以下几点:UITableView自身滚动,但我想滚动整个视图。 什么是最好的可能性呢?
我今天创build的可能的解决scheme
1)第一件事是:我创build一个UITableViewController并声明一个标题部分,我包含了所有的标签,图像等编程(我喜欢使用界面生成器…)
2)另一个解决scheme是计算视图的高度。 我尽力这样做 – 但是:没有成功。 如果这是做到这一点的最好方法:谁能举个例子吗?
我会沟UIScrollView
,只是使用UITableView
。 你可以添加一个UIView
对象作为UITableView
的tableHeaderView
,只需在Interface Builder中拖动即可。 现在,因为所有东西都是UITableView
层次结构的一部分,所有东西都将按照预期一起滚动。
您也可以尝试将delaysContentTouches
设置为NO
。 根据您的设置,这可能会使滚动视图响应触摸,而不是表视图。
从苹果UIScrollView
Docs :
delaysContentTouches
一个布尔值,用于确定滚动视图是否延迟触摸手势的处理。
@property(nonatomic) BOOL delaysContentTouches
讨论
如果此属性的值为
YES
,那么滚动视图会延迟处理触摸手势,直到它可以确定滚动是否为意图。 如果值为NO
,滚动视图会立即调用touchesShouldBegin:withEvent:inContentView:
默认值是YES
。
你将不得不(如你所说)添加包含图像和button的UIView
到实际的UITableView
。 将其embedded到滚动视图中会产生您所看到的不需要的行为。
我build议返回UIView
作为您的表视图的第一部分的标题视图。 你可以通过实现UITableViewDelegate
方法来做到这一点:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section;
如果您将IBOutlet
维护到包含图像/标签的视图,则可以在此处将其返回。
这是相同的演示,我希望它可以帮助你从iPhone的Sorce代码库