3

私はアプリを開発しています.1つの水平スクロール可能なUIScrollViewフルスクリーンと、複数の(3つとしましょう)垂直スクロール可能なUIScrollViewを含むページネーションがあり、それぞれがフルスクリーンです。それらは余白なしで配置され、左側の原点は (0,0) です。

垂直方向にスクロール可能な UIScrollView はそれぞれ、上下に配置されたボタンで構成され、それぞれをクリックすると ViewController が表示されます。

[self presentViewController:someViewController animated:YES completion:nil];

このコードは右の 2 つの UIScrollView では問題なく動作しますが、左の UIScrollView ではバグがあります。

  • 水平 UIScrollView の高さの下にあるボタンはクリックできません。したがって、水平 UIScrollView の高さが 440px の場合、origin.y > 440 の UIButton はクリックできません。
  • UIScrollView がわずかに下にスクロールされ、ボタンがクリックされた場合 (440px 未満ではない)、UIScrollView 全体が下に「移動」され、要求されたビュー コントローラーが表示される間、遅延が発生します。このView Controllerが閉じられると、スクロールビューは下に留まります。上にスクロールしてボタンを押すと、魔法のようにあるべき場所にジャンプします。

さて、楽しい部分です!

左の UIScrollView の原点を (1,0) に変更すると、この問題はなくなります。この問題の原因は何ですか?

いくつかの追加コード:

[horizontalSV setDelegate:self];
[horizontalSV setContentSize:horizontalContentView.frame.size];
[horizontalSV addSubview:horizontalContentView];                  // View containing vertical scroll views, it's set up in IB
[horizontalContentView setFrame:CGRectMake(-1, 0, 961, 440)];     // This is now used for the hack

// Now imagine three of these
firstSVcontent = [[VerticalContentView alloc] init];              // Setting the content view
[firstSVcontent setTitle:title];
[firstSVcontent setButtons:blahblah];
[firstVerticalSV setContentSize:firstSVcontent.view.frame.size];  // Setting vertical scroll view
[firstVerticalSV addSubview:firstSVcontent.view];
4

1 に答える 1

2

ほぼ1年後にこの問題を解決しました!

問題は、ビュー管理のほとんどを XIB ファイルで行っていたのに、viewDidLoad メソッドでこれらのコンテンツ ビューとスクロール ビューを読み取って、それらをまとめただけだったことです。

すべてのスクロール ビューとコンテンツ ビューをプログラムで作成するようにコードを書き直しましたが、すべて問題なく動作します。

于 2013-04-23T22:24:21.043 に答える