iOS阻止tableview的子视图滚动tableview

时间:2013-03-09 22:06:31

标签: ios uiview uiscrollview tableview subview

我已经在我的tableview中添加了一个子视图,当用户滚动tableview时,子视图会滚动它。我该如何防止这种情况?我知道这可能与不将视图添加到tableview的子视图有关,但我不知道有任何其他方法可以做到这一点。感谢。

2 个答案:

答案 0 :(得分:3)

如果要使视图成为表视图的子视图,则可以通过在scrollViewDidScroll方法中更改其origin.y值来使其浮动(非滚动)。

-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
    self.iv.frame = CGRectMake(self.ivOrigin.x, self.ivOrigin.y + self.tableView.bounds.origin.y, self.iv.frame.size.width, self.iv.frame.size.height);
}

在此示例中,“iv”是图像视图的属性,“ivOrigin”是图像视图初始原点的属性(在viewDidLoad中创建图像视图及其帧时定义)。

答案 1 :(得分:2)

UITableView是为了滚动的东西而构建的。

所以,你可以对抗那个,因为你发现它是相当困难的,因为关于组件的所有内容都是建立的,并且集中在滚动和快速显示完整列表数据的子集......或者,你不能打它并将你的静态物品放在桌子顶部作为固定位置物品。

如果您无法在主视图中添加表视图和动画项,则始终可以添加包含表视图和动画视图的自定义UIView类。让您的自定义视图类将包含的表视图公开为.table属性,并且可以调整您放入的容器,以便在需要时使用“mycontainerObject.tableview”而不是“tableview”。

是的,编写自定义UIView子类并为其提供一些属性来保存UITableView以及任何你正在制作动画的UIView都要多做一些工作......但从长远来看,它可能比试图“更安全”破解“进入UITableView的方法和视图层次结构,试图给它一个”固定到位“的行为。