2

ボタン付きのView Controllerがあります。ボタンが押されたときに、スクロールビューを含むサブビューを追加したい。現在、私のコードはサブビューを表示し、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、高さ 600 です。

4

3 に答える 3

1

あなたの質問を正確に理解したかどうかはわかりませんが、私がしたことと似ているかもしれませんし、似ていないかもしれません.

これを追加するとうまくいくかどうかを確認してください:

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

これがあなたが探しているものではない場合は申し訳ありません...私もスクロールビューに問題があります。幸運を!

于 2012-11-29T21:49:22.547 に答える
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 に答える