私はアプリを開発しています.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];