2

我有一个带有按钮的视图控制器。当按下按钮时,我想添加一个包含滚动视图的子视图。现在,只要我不添加 xib,我的代码就会显示子视图并滚动正常。当我将 xib 添加到滚动视图时,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 宽 x 600 高。

4

3 回答 3

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文档。

于 2012-10-14T17:34:54.500 回答
1

我不确定我是否完全理解您的问题,但它可能与我所做的类似,也可能不相似。

看看添加这个是否有效:

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

抱歉,如果这不是您要查找的内容...我也遇到了滚动视图问题。祝你好运!

于 2012-11-29T21:49:22.547 回答
0

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

于 2014-11-30T19:34:10.543 回答