3

ViewDidLoad メソッドのテーブルビューに UILongPressGestureRecognizer を追加しました。これを追加して、コード内のテーブル ビューでの長押しを検出しました。しかし、それは決して機能しません。ViewDidLoad に次のコードを追加しました。

UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc] 
                                      initWithTarget:self action:@selector(handleLongPress:)];
lpgr.minimumPressDuration = 2.0; //seconds
lpgr.delegate = self;
[self.resultTableView addGestureRecognizer:lpgr];
[lpgr release];

このメソッドも追加しました:

-(void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer
{
    CGPoint p = [gestureRecognizer locationInView:self.resultTableView];

    NSIndexPath *indexPath = [self.resultTableView indexPathForRowAtPoint:p];
    if (indexPath == nil) {

        NSLog(@"long press on table view but not on a row");
    }
    else {


        NSLog(@"long press on table view at row %d", indexPath.row);
    }


}

これを解決するのを手伝ってください。

4

3 に答える 3

6

あなたのコードは機能しています。UIGestureRecognizerDelegate.h ファイルにデリゲートを追加するか、resultTableView を宣言する方法が必要だと思います。つまり、プログラムで定義するか、.xib ファイルを使用して定義します。一度確認してください。

私はこのようにしてみました。

     resultTableView = [[UITableView alloc] init];
     resultTableView =[[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 420) style:UITableViewStylePlain];
    resultTableView.rowHeight = 100.0;
    resultTableView.delegate=self;
     resultTableView.dataSource=self;
    [self.view addSubview:resultTableView];

    UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc] 
                                          initWithTarget:self action:@selector(handleLongPress:)];
    lpgr.minimumPressDuration = 2.0; //seconds
    lpgr.delegate = self;
    [resultTableView addGestureRecognizer:lpgr];
    [lpgr release];
于 2012-08-09T07:03:53.657 に答える
3

個々のセルにジェスチャを追加したいようですが、テーブルにジェスチャを追加しています。UITableViewCell代わりにジェスチャーを追加してみてください。

于 2012-08-09T06:48:59.410 に答える
0

ジェスチャ レコグナイザーが panGestureRecognizer によってブロックされている場合はUITableView、デリゲートを実装して、両方が機能することを確認します。

 -(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
} 
于 2012-11-29T16:28:11.763 に答える