1

私は UIScrollView をサブクラス化しており、最初にこの ShowsScrollView にいくつかの項目を入力します。塗りつぶしたら、この ShowsScrollView に frame と contentSize を設定します。今のところすべて正常に動作しています。タッチイベントが発生し、スクロールが機能しています..

しかし、横向きに回転した後、ShowsScrollView フレームの x 座標と y 座標を変更して、下から右上隅に移動します。次に、サイズを変更し (ShowsScrollView フレームの幅と高さを変更)、このスクロール内の項目を並べ替えます。最後に、新しい contentSize をセットアップします。今、私はスクロールビューの最初の1/4でのみタッチイベントを取得し、スクロールもスクロールビューの1/4でのみ機能しますが、スクロールビューのすべてのアイテムをスクロールします。すべてのアクションの後、ログを書きます: NSLog(@"ViewController: setLandscape finished: size: %f, %f content: %f,%f",scrollView.frame.size.width,scrollView.frame.size.height, scrollView .contentSize.width、scrollView.contentSize.height );

値は正しいです: ViewController: setLandscape finished: size: 390.000000, 723.000000 content: 390.000000,950.000000

縦向きに戻すと、すべてを移動してサイズを変更すると、すべて正常に動作します..

助けてください!

4

2 に答える 2

0

たとえば、scrollViewの前に持ってくる必要があります。superView

[self.view bringSubviewToFron:scrollView];
于 2012-08-07T09:53:24.257 に答える
0

私は同じ問題を抱えていましたが、スクロールビューのフレームを変更した後、self.viewのサイズを再度設定することで機能させることができました。なぜこれが機能するのかわかりませんが、機能します。

// Set the view's frame
if (UIDeviceOrientationIsLandscape(toOrientation)) {
 [self.view setSize:CGSizeMake(1024, 724)];
} else {
 [self.view setSize:CGSizeMake(768, 960)];
}

// Set scrollview frame
if (UIInterfaceOrientationIsLandscape(toOrientation)) {
 self.scrollView.frame = CGRectMake(0, 0, 100, 300);
 self.scrollView.contentSize = CGSizeMake(100, 600);
}
else {
 self.scrollView.frame = CGRectMake(0, 0, 300, 100);
 self.scrollView.contentSize = CGSizeMake(600, 100);
}

// Move your content around here

// Set the view's frame again
if (UIDeviceOrientationIsLandscape(toOrientation)) {
 [self.view setSize:CGSizeMake(1024, 724)];
} else {
 [self.view setSize:CGSizeMake(768, 960)];
}
于 2010-05-14T10:02:22.180 に答える