UITableViewCell上的UILongPressGestureRecognizer在iOS 5和4.3中不起作用

时间:2012-08-15 16:57:39

标签: iphone ios5 uitableview ios4 long-press

我有一个表视图,我在表视图单元格上使用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.
    }
}

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

longPressRecognizer.delegate = self;