从滚动禁用UITableview的子视图

时间:2012-04-09 04:55:03

标签: xcode uitableview scroll subview

(xCode 4.3.2,ARC,Storyboard)像往常一样,我有一个Master / Detail项目,MasterViewController是一个UITableViewController。它顶部有一个导航栏,底部有一个工具栏。我创建了一个自定义子视图,我在viewDidLoad中以编程方式加载。

它加载正常,并且就像我想要的那样在顶部,但是当用户滚动tableview时,子视图也会滚动。我需要子视图“坚持”到底部。

enter image description here

以下是我用来添加子视图的代码:

    CGRect totalFrame = CGRectMake(0, 314, 320, 58);
    UIView *totalBG = [[UIView alloc] initWithFrame:totalFrame];
    totalBG.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"totalBG.png"]];
    [self.view addSubview:totalBG];

    CGRect totalLabelFrame = CGRectMake(12, 12, 80, 40);
    totalLabelBG = [[UILabel alloc] initWithFrame:totalLabelFrame];
    totalLabelBG.backgroundColor = [UIColor clearColor];
    totalLabelBG.text = @"Total:";
    [totalLabelBG setFont:[UIFont boldSystemFontOfSize:22]];
    totalLabelBG.userInteractionEnabled = NO;
    totalLabelBG.textColor = [UIColor whiteColor];
    totalLabelBG.shadowColor = [UIColor blackColor];
    totalLabelBG.shadowOffset = CGSizeMake(0, 1);
    [totalBG addSubview:totalLabelBG];

我尝试在viewDidLoad中将userInteractionEnabled设置为NO并检测到 触摸,并设置totalLabelBG.center属性,但都没有效果。

我还阅读了许多关于禁用网页浏览滚动的主题,但没有发现任何相关内容。

我发现另一个SOF问题的答案可能有效,也可能无效,但用户没有解释答案。 "The trick is to adjust the frame of the "non-scrollable" subview inside -layoutSubviews."

2 个答案:

答案 0 :(得分:10)

我通过将子视图添加到UINavigationController容器中来实现了预期的结果:

[self.navigationController.view addSubview:totalBG];

答案 1 :(得分:0)

就像上面的答案一样。只需将该特定子视图添加到UIScrollView实例外部的任何子视图即可。如果它不想滚动那么将它放在滚动视图中开始是没有意义的。而是使滚动视图仅占用总计子视图顶部的高度