1. ホーム
  2. ios

[解決済み] UITableViewの長押し

2022-04-13 03:02:57

質問

の長押しを処理したい。 UITableViewCell を表示させることができます。 誰かがすでにこれを行いましたか?

特に、ジェスチャー認識で UITableView ?

解決方法は?

まず、テーブルビューに長押しジェスチャー認識機能を追加します。

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

次に、ジェスチャーハンドラで

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

    NSIndexPath *indexPath = [self.myTableView indexPathForRowAtPoint:p];
    if (indexPath == nil) {
        NSLog(@"long press on table view but not on a row");
    } else if (gestureRecognizer.state == UIGestureRecognizerStateBegan) {
        NSLog(@"long press on table view at row %ld", indexPath.row);
    } else {
        NSLog(@"gestureRecognizer.state = %ld", gestureRecognizer.state);
    }
}

ユーザーがセルを普通にタップするのを邪魔しないように、これには注意が必要で、また、以下の点にも注意が必要です。 handleLongPress が複数回発火する可能性があります (これはジェスチャー認識機能の状態変化によるものです)。