20

私はサブクラスUITableViewCell化し、そのクラスでパンジェスチャ認識機能を適用します。

UIPanGestureRecognizer *panning = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePanning:)];
panning.minimumNumberOfTouches = 1;
panning.maximumNumberOfTouches = 1;
[self.contentView addGestureRecognizer:panning];
[panning release];

次に、テーブルのビューで同時ジェスチャを許可することになっているデリゲートプロトコルを実装します。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
    return YES;
}

handlePanning次に、メソッド内にログを配置して、いつ検出されたかを確認します。

- (void)handlePanning:(UIPanGestureRecognizer *)sender {
    NSLog(@"PAN");
}

私の問題は、テーブルビューのセルのリストを垂直方向にスクロールできないことですhandlePanning。これは、どの方向にパンしても呼び出されます。

私が欲しいのは、handlePanning垂直方向ではなく水平方向のパンのみがある場合にのみ呼び出されることです。いくつかのガイダンスをいただければ幸いです。

4

4 に答える 4

17

pannings委任プロパティを設定しようとしましたか?

panning.delegate = /* class name with the delegate method in it */;

また、そのクラスを UIGestureRecognizerDelegate に準拠させる必要があります。

于 2012-04-17T00:45:05.590 に答える
3

パン ジェスチャ レコグナイザーをサブクラス化し、水平パンのみを認識できるようにします。カスタム ジェスチャ レコグナイザの問題に関する WWDC 2010 ビデオが利用可能です。実際には、この件に関しては 2 つあります。https : //developer.apple.com/videos/archive/で確認してください。

  • Gesture Recognizer によるタッチ イベント処理の簡素化
  • 高度なジェスチャー認識
于 2012-04-17T00:46:21.160 に答える
2

テーブルビューにジェスチャ認識機能を追加します。それから、セルオブジェクトを取得できます。そこから、セルの機能を処理できます。ジェスチャごとに、開始、変更、終了の状態があります。したがって、開始位置を保存します。

    CGPoint beginLocation = [gesture locationInView:tblView]; // touch begin state.

    CGPoint endLocation = [gesture locationInView:tblView]; // touch end state.

このポイントを使用して、IndexPathを取得できます

    NSIndexPath *indexPath = [tblView indexPathForRowAtPoint:beginPoint];

このインデックスパスから、セルにアクセスできます。

            UITableViewCell *cell = [tableview cellForRowAtIndexPath : indexPath];

このCellオブジェクトを使用して、それを処理できます。

于 2013-03-20T07:45:03.397 に答える