4

と で構成される iOS レイアウトを構築していUITableViewますUIScrollView。はのUIScrollViewテーブル セル内にあり、UITableView水平方向と垂直方向の両方にスクロールできます。下の図は、この状況を示しています。ユーザーがスクロール・イベントでスクロール・ダウン/アップを開始すると、スクロール・ビューではなく、テーブル・ビューUIScrollViewがトリガーされますが、スクロール・ビューの上部は点線上に表示されます(高さは一定です)。次に、スクロール タッチ イベントは、テーブル ビューではなく、スクロール ビューに対してトリガーする必要があります。setContentOffsetsetContentOffsetsetContentOffset

別のケース: ユーザーがテーブル ビューでスクロールを開始するとsetContentOffset、スクロール ビューが点線に達するまでテーブル ビューがトリガーされます。次に、スクロール ビューが処理する必要がありsetContentOffsetます。

私の問題は、1回のスライドアクション中にテーブルビューとスクロールビューの間でタッチイベントを転送する方法です。

ここに画像の説明を入力

4

2 に答える 2

2

これは、非常に具体的でカスタムなものが必要なケースの 1 つに思えます。したがって、ジェスチャ レコグナイザーを巧妙に使おうとするだけでは十分ではありません。

主な問題は、 などのジェスチャ レコグナイザーを制御する方法は、ジェスチャの開始 (または継続中のタッチではなく、新しいタッチの場合)gestureRecognizer:shouldReceiveTouch:gestureRecognizerShouldBegin:のみ影響しますが、各ビューの制御間で単一の継続中のジェスチャを移行する必要があることです。このため、画面全体に大きな透明なビューを配置し、その上にパン ジェスチャ レコグナイザーを配置し、handlePan メソッドで調整するビューを決定しsetContentOffset、そのビューを直接呼び出す必要があると思います。パン レコグナイザーの変換と既存のコンテンツ オフセットを使用して、新しいものを計算できます。これがあまりエレガントではないことはわかっていますが、必要な効果を達成する別の方法は思いつきません。

于 2013-09-10T01:41:29.617 に答える