私はUITableView
内側に別のものを持っていUITableview
ます。1 つ目は水平に配置され、2 つ目は通常のUITableView
.
水平テーブルビューは、「gestureRecognizerShouldBegin:」メソッドを次のようにオーバーロードしたカスタム クラスです。
- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)panGestureRecognizer {
CGPoint translation = [panGestureRecognizer translationInView:someView];
return fabs(translation.y) > fabs(translation.x);
}
基本的に、ユーザーが水平テーブルビュー上で水平または垂直のパン移動を実行したかどうかを検出します。垂直の場合はメインのテーブルビューがスクロールし、水平の場合は水平のテーブルビューがスクロールします。
私が直面している問題は次のとおりです。
- 横長のテーブルビューでパンタッチを行います。
- 変換変数の 'x' と 'y' の値は、ユーザーが行ったタッチを反映しています。
- 水平方向のテーブルビューがスクロールを開始します。
- スクロールが減速しています。
- スクロールが減速している間に、もう一度パン タッチを実行します。
- 移動変数の 'x' と 'y' の値は、指をどれだけ動かしても常に 0 です。
- 指を上げて、水平方向のテーブルビュー (スクロールが停止した状態) で別の水平方向のパン タッチを実行します。
- translationInView で返された CGPoint の 'x' と 'y' の値が再び正しくなり、スクロール移動が開始されます。
したがって、「gestureRecognizerShouldBegin:」メソッドは、スクロールの移動中にユーザーが実行した動きを検出できないようです...
ヒントをいただければ幸いです。
ありがとう!