在UIScrollView的UITableView – 如何使视图滚动,而不是本身的TableView?

想象一下,UIViewController中有一个UIScrollView。 在视图的顶部有一个UIImageView,一些UILabels和其他东西。 此外,还有一个UITableView,其内容是dynamic原型。 我附上一张照片来说明:

在这里输入图像说明

我没有在UITableView静态数量的单元格,所以它可以滚动。 我的问题是以下几点:UITableView自身滚动,但我想滚动整个视图。 什么是最好的可能性呢?


我今天创build的可能的解决scheme

1)第一件事是:我创build一个UITableViewController并声明一个标题部分,我包含了所有的标签,图像等编程(我喜欢使用界面生成器…)

2)另一个解决scheme是计算视图的高度。 我尽力这样做 – 但是:没有成功。 如果这是做到这一点的最好方法:谁能举个例子吗?

我会沟UIScrollView ,只是使用UITableView 。 你可以添加一个UIView对象作为UITableViewtableHeaderView ,只需在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代码库

http://developer.apple.com/library/ios/#samplecode/iPhoneCoreDataRecipes/Introduction/Intro.html谢谢