将UIScrollView添加到子视图不会滚动

时间:2012-10-11 15:48:35

标签: uiview uiviewcontroller uiscrollview subview addsubview

我有一个带按钮的视图控制器。按下按钮时,我想添加一个包含滚动视图的子视图。现在我的代码显示子视图,只要我不添加xib就滚动。当我将xib添加到scrollview时,xib会出现在子视图中,但不再有任何滚动。

主视图控制器:

-(IBAction)startNewSearch:(id)sender {
    UIScrollView *myScrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, 320, 600)];

    UIView *myView = [[[NSBundle mainBundle] loadNibNamed:@"NewSearch" owner:self options:nil] objectAtIndex:0];

    [myScrollView setScrollEnabled:YES];
    [myScrollView setContentSize:CGSizeMake(320, 600)];
    [myScrollView setShowsVerticalScrollIndicator:YES];
    [myScrollView setShowsHorizontalScrollIndicator:YES];
    [myScrollView setPagingEnabled:NO];

    [myScrollView addSubview:myView];

    [self.view addSubview:myScrollView];
}

NewSearch类是一个UIView。它的xib是320宽600高。

3 个答案:

答案 0 :(得分:1)

这是因为您的内容大小高度与帧高相同。 尝试在屏幕上使用与主视图相同的帧大小,滚动视图的内容大小应该大于高度(在您的情况下)或宽度(这取决于您需要水平或垂直滚动​​)。

例如

CGRect scrollFrame = CGRectMake(0, 0, [self.view bounds].size.height, self.view bounds].size.width);
UIScrollView *myScrollView = [[UIScrollView alloc]initWithFrame: scrollFrame];

...

[myScrollView setContentSize:CGSizeMake(320, **800**)];

如您所见,内容大小的高度大于滚动视图的帧高。所以它可以水平滚动。 另请参阅UIScrollView文档。

答案 1 :(得分:1)

我不确定我是否完全理解你的问题,但它可能与我所做的事情相似或不同。

看看添加它是否有效:

-(void)viewWillAppear:(BOOL)animated {    
   [self.myScrollView setFrame:CGRectMake(0, 0, 320, 600)];
}

很抱歉,如果这不是您正在寻找的......我也遇到了与scrollview相关的问题。祝你好运!

答案 2 :(得分:0)

当我开始使用ios8时,我遇到了类似的问题。事实证明,触摸被视图控制器链中的某些东西所困。当我开始使用presentView Controller作为包含scrollview的视图控制器时,触摸(和滚动)再次开始工作。