UILongPressGestureRecognizer

UILongPressGestureRecognizer

我在单元格中使用 UILongPressGestureRecognizer。
我需要的是:当用户点击一个单元格 1.0 秒时,调用一个 View Controller 。
如果用户点击单元格,另一个 VC。

我可以通过使用 UILongPressGestureRecognizer 来实现。但问题是调用 viewController 两次。

代码:

if (indexPath.section == 0 && indexPath.row == 1){
    UILongPressGestureRecognizer *longPressTap = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(memberListWithSearchOptions)];

    longPressTap.minimumPressDuration = 1.0;

    [cell addGestureRecognizer:longPressTap];
    [longPressTap release];
}

我认为我需要的是,在识别出 LongPress 之后,禁用识别器,直到 tableView 再次出现在屏幕上。

我怎样才能做到这一点?

谢谢,

强化学习

最佳答案

您可能需要做的不是禁用它,而是检查手势识别器的 state 属性,并且仅在状态为 UIGestureRecognizerStateBegan (或 UIGestureRecognizerStateEnded )时才显示下一个 View Controller 。

您需要更改方法以接受手势识别器作为参数(并更新 @selector 参数)并检查它的状态:

UILongPressGestureRecognizer *longPressTap =
    [[UILongPressGestureRecognizer alloc] initWithTarget:self
        action:@selector(memberListWithSearchOptions:)];  //colon at end

//...

- (void)memberListWithSearchOptions:(UILongPressGestureRecognizer *)lpt
{
    if (lpt.state == UIGestureRecognizerStateBegan)
        //or check for UIGestureRecognizerStateEnded instead
    {
        //display view controller...
    }
}

关于ios - UITableViewCell 上的 UILongPressGestureRecognizer - 双重调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7688329/

10-10 20:53