1

UITableView に UIPanGestureController を追加しようとしているので、ユーザーが手動でパンしているのか、それとも最初のキックを行っただけなのかを検出して、ビューのスクロールを単独で見ることができます。その理由は、スクロールが遅くなるとすぐにセルにスナップしたいからです (運命の輪を想像してください)。もちろん、ユーザーが手動でパンしているときにスナップしたくありません。

ただし、ジェスチャ コントローラーを使用する (およびそれに応じて「手動でスクロールする」変数を設定する) か、ビューをスクロールすることができます。

最初に、UIGestureRecognizerDelegate を含めるようにテーブル ビューを変更しました。

ビューを初期化した後、私は...

panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panTableView:)];
[panGestureRecognizer setDelegate:self];
[self.view addGestureRecognizer:panGestureRecognizer];

BOOL を設定するために、Begin 関数を実装します。

- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer
{
  isPanning = YES;
  return NO;
}

テーブルビューの独自のスクロールメソッドを使用したい(そして使用する必要がある)ため、常に NO を返すと、ジェスチャ認識機能がアクティブにならないようにする必要があります。

問題: アクション「panTableView」が呼び出されません。 デリゲートを設定しないと、アクションが呼び出されますが、ジェスチャ認識エンジンがすべてのタッチをキャッチするため、スクロールできません。

私はすでにターゲットを調べました。デリゲートを設定した後、ジェスチャ レコグナイザーのビューとデリゲート ポインターは self.view と同じですが、アクションは引き続き正しいセレクターで自分自身をターゲットにします。

4

1 に答える 1

0

試す

- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer
{
  isPanning = YES;
  return YES;
}

そしてこれを実装する

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
  return YES
}
于 2012-05-10T13:17:47.493 に答える