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

如果手势识别器被UITableViewpanGestureRecognizer 阻止,请实现委托以确保两者都可以工作

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