1

私はUITableView内側に別のものを持っていUITableviewます。1 つ目は水平に配置され、2 つ目は通常のUITableView.

水平テーブルビューは、「gestureRecognizerShouldBegin:」メソッドを次のようにオーバーロードしたカスタム クラスです。

- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)panGestureRecognizer {
    CGPoint translation = [panGestureRecognizer translationInView:someView];
    return fabs(translation.y) > fabs(translation.x);
}

基本的に、ユーザーが水平テーブルビュー上で水平または垂直のパン移動を実行したかどうかを検出します。垂直の場合はメインのテーブルビューがスクロールし、水平の場合は水平のテーブルビューがスクロールします。

私が直面している問題は次のとおりです。

  1. 横長のテーブルビューでパンタッチを行います。
  2. 変換変数の 'x' と 'y' の値は、ユーザーが行ったタッチを反映しています。
  3. 水平方向のテーブルビューがスクロールを開始します。
  4. スクロールが減速しています。
  5. スクロールが減速している間に、もう一度パン タッチを実行します。
  6. 移動変数の 'x' と 'y' の値は、指をどれだけ動かしても常に 0 です。
  7. 指を上げて、水平方向のテーブルビュー (スクロールが停止した状態) で別の水平方向のパン タッチを実行します。
  8. translationInView で返された CGPoint の 'x' と 'y' の値が再び正しくなり、スクロール移動が開始されます。

したがって、「gestureRecognizerShouldBegin:」メソッドは、スクロールの移動中にユーザーが実行した動きを検出できないようです...

ヒントをいただければ幸いです。

ありがとう!

4

0 に答える 0