【问题标题】:UITableView in a UIScrollView - How to make the view scroll, but not the TableView in itself?UIScrollView 中的 UITableView - 如何使视图滚动,而不是 TableView 本身?
【发布时间】:2012-01-10 02:22:32
【问题描述】:

想象一下,有一个 UIViewController 里面有一个 UIScrollView。在视图的顶部有一个 UIImageView、一些 UILabel 和其他东西。此外,还有一个 UITableView,其内容是动态原型。我附上一张图片说明:

我在 UITableView 中没有固定数量的单元格,因此它可以滚动。我的问题如下: UITableView 本身滚动,但我想滚动整个视图。这样做的最佳可能性是什么?


我今天建立的可能解决方案

1)第一件事是:我创建了一个 UITableViewController 并声明了一个标题部分,其中我以编程方式包含了我的所有标签、图像等(我很乐意为此使用界面构建器......)

2) 另一种解决方案是计算视图的高度。我尽力做到这一点 - 但是:没有成功。如果这是最好的方法:有人可以举个例子吗?

【问题讨论】:

    标签: objective-c ios uitableview uiscrollview


    【解决方案1】:

    我会放弃UIScrollView,而只使用UITableView。您可以将UIView 对象添加为UITableViewtableHeaderView,只需在Interface Builder 中将其拖入即可。现在,由于所有内容都是 UITableView 层次结构的一部分,因此所有内容都将按预期一起滚动。

    【讨论】:

    • 非常感谢!你让我很开心——这就像一个首选的圣诞礼物;o)
    • /从手指到鼻子,从 SO 的烟囱中飞升
    【解决方案2】:

    您必须(正如您所提到的)将包含图像和按钮的UIView 添加到实际的UITableView。将其嵌入到滚动视图中会产生您所看到的不良行为。

    我建议返回UIView 作为表格视图第一部分的标题视图。您可以通过实现UITableViewDelegate 方法来做到这一点:

    - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section;
    

    如果您为包含您的图像/标签的视图维护IBOutlet,您可以在此处返回它。

    【讨论】:

    • 感谢您的回答。如果我这样做,我必须以编程方式实现所有图像/标签,对吗?我想避免这种情况......
    • 不,您仍然可以使用 Interface Builder,只要包含您的图像/标签的 UIViewUITableViewDelegate 上定义为 IBOutlet
    • 啊好吧!现在我明白你的意思了。你是对的!一个很好的解决方案,谢谢你:-)
    【解决方案3】:

    您也可以尝试在您的scrollView 上将delaysContentTouches 设置为NO。根据您的设置,这可能会使滚动视图首先响应触摸而不是表格视图。

    来自苹果UIScrollView Docs

    delaysContentTouches

    一个布尔值,确定滚动视图是否延迟 处理触地手势。

    @property(nonatomic) BOOL delaysContentTouches

    讨论

    如果此属性的值为YES,则滚动视图延迟处理 触摸向下手势,直到它可以确定滚动是否是 意图。如果值为NO,则滚动视图立即调用 touchesShouldBegin:withEvent:inContentView:。默认 值为YES

    【讨论】:

    • 我也会试试这个 - 似乎是另一个很好的解决方案。谢谢:-)
    【解决方案4】:

    这是同一个演示,我希望它对你的 iphone 源代码库有所帮助

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-24
      • 1970-01-01
      • 2012-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多