1

我有一个表格视图,我在表格视图单元格上使用 UILongPressGestureRecognizer 在单元格上显示上下文菜单,以允许用户执行一些额外的功能。在 iOS 5.1 中一切正常,但是当我在 iOS 5 和 4.3 中测试时,该事件没有被触发。

有谁知道如何解决这个问题,请帮助我,在此先感谢。

下面是我的代码:

在 tableViewCell.h 中:添加 UIGestureRecognizerDelegate

在 tableViewCell.m

UILongPressGestureRecognizer *longPressRecognizer = [[UILongPressGestureRecognizer alloc] 
                                                     initWithTarget:self action:@selector(handleLongPress:)];
longPressRecognizer.minimumPressDuration = 1.5;
longPressRecognizer.numberOfTouchesRequired = 1;
longPressRecognizer.numberOfTapsRequired = 0;
longPressRecognizer.delegate = self;

[self addGestureRecognizer:longPressRecognizer];
[longPressRecognizer release];

// 处理事件的方法

- (void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer
{    
    if (gestureRecognizer.state == UIGestureRecognizerStateBegan) 
    {
        // Do something.
    }
}
4

2 回答 2

2

在这个问题上花了 1.5 天后,我发现 tableView 以某种方式收到长按事件,但 tableViewCell 在 iOS 5/4.3 上没有。所以我通过将 UILongPressGuestureRecognizer 添加到 tableView 然后在长按事件处理程序中然后调用 tableViewCell 来显示上下文菜单来解决这个问题,它可以工作。

于 2012-08-18T07:51:57.190 回答
1

我也遇到了这个问题。我发现只有当'delegate'属性为'NULL'时,长按手势识别器才能正常工作。因此,请尝试删除此行。

longPressRecognizer.delegate = self;
于 2013-03-08T05:23:04.893 回答