注:これはパフォーマンス上の問題ではありません。私は、UITableViewでデキューするセルの利点を認識しています。なぜUITableViewをスクロールするよりもスクロールする方が敏感ですか?
テストのために、白いスクロールビューで黒の背景色を持つシンプルな不透明なUIViewサブビューとそれらの間に100ポイントの間隔があるため、スクロールするものがあるUIScrollViewを作成しました。非常に軽量です。他に何もない。本当に私を信じて、それは重くはありません。
私はスクロールビューをスクロールし始め、テーブルビューをスクロールし始めることには大きな違いがあることに気づきます。
スクロールビューにタッチしてすぐにドラッグを開始すると、約0.25秒遅れて突然キャッチアップします。そこからそれは流動的であり、私が触れて再び触れるまで、それ以上遅れることはありません。
私が同じことをするときははるかに大きくて複雑なUITableViewでは、スクロールを開始する前に0.25秒の初期遅延はありません。
私は可能なすべてのプロパティを変更しようとしましたが、この愚かな遅延を排除することはできません。私はそれは、タッチがサブビューで起こることを意味するかどうかを把握したいスクロールビューと関係していると考えて、ユーザーが指をあまり動かすのを見ます。その後、スクロールを開始します。
UITableViewはUIScrollView自体であり、UIScrollViewをUITableViewのように速くスクロールさせたいと思っています。どうやって?
編集: Sh ..私は何かを見つけました!
NSLog(@"GR = %@", self.gestureRecognizers);
GR = (
"<UIScrollViewDelayedTouchesBeganGestureRecognizer: 0x13e930;
state = Possible;
delaysTouchesBegan = YES;
view = <TestScrollView 0x13e380>;
target= <(action=delayed:, target=<TestScrollView 0x13e380>)>>",
"<UIScrollViewPanGestureRecognizer: 0x13ee00;
state = Possible;
delaysTouchesEnded = NO;
view = <TestScrollView 0x13e380>;
target= <(action=handlePan:, target=<TestScrollView 0x13e380>)>>"
)
これはiOS 4で、iOS4にはpanGestureRecognizerプロパティはありません。最も疑わしいのは、delayTouchesBeganを持つUIScrollViewDelayedTouchesBeganGestureRecognizerです。くそー! これをiOS4のに設定するにはどうすればよいですか?
私は、内部ビューのユーザー対話を無効にしようとしましたが、効果はありませんでした。 –
-touchesShouldCancelInContentView:全く効果がありません。 –