如何为 tableViewController 中的自定义单元格按钮创建手势识别器,以便能够识别它所在的单元格?

Posted

技术标签:

【中文标题】如何为 tableViewController 中的自定义单元格按钮创建手势识别器,以便能够识别它所在的单元格?【英文标题】:How do you create a gesture recognizer for a custom cells button in a tableViewController that will be able to identify the cell it is in? 【发布时间】:2016-10-18 20:51:39 【问题描述】:

我有一个自定义单元格,它有一个按钮,我需要识别用户是点击还是长按。我能够识别两者,但长按手势仅适用于最近制作的单元格,而当按钮被长按时,之前的单元格不执行任何操作。

//这是我的 cellForRowAtIndexPath 中的内容

self.longPress = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(handleLongPressGestures:)];
longPress.minimumPressDuration = 1.0f;
longPress.allowableMovement = 300.0f;

[cell.button addGestureRecognizer:longPress];

//测试LP

(void)handleLongPressGestures:(UILongPressGestureRecognizer*)sender

if([sender isEqual:self.longPress])

    if(sender.state == UIGestureRecognizerStateBegan)
        [self performSegueWithIdentifier:@"changeValues" sender:self];
    

因为它只适用于最近制作的单元格,我还尝试将 longPress 属性的初始化移动到视图并加载并分配给创建单元格时的按钮,但我仍然得到相同的结果。如果有人对做这样的事情有任何见解,那将不胜感激。

【问题讨论】:

【参考方案1】:

这个方法对我有用,虽然它不使用手势识别器,但它确实做了我想做的事,所以我会发布它以防其他人遇到同样的问题

- (IBAction)numberAvailablePressed:(id)sender 

    pressedDown = NO;



- (IBAction)numberAvailableTouchedDown:(id)sender 
    pressedDown = YES;


    [NSTimer scheduledTimerWithTimeInterval:3.0
                                     target:self
                                   selector:@selector(checkIfPressed)
                                   userInfo:nil
                                    repeats:NO];



-(void)checkIfPressed

    if(pressedDown == YES)
    
        [self performSegueWithIdentifier:@"changeValues" sender:self];
    

【讨论】:

以上是关于如何为 tableViewController 中的自定义单元格按钮创建手势识别器,以便能够识别它所在的单元格?的主要内容,如果未能解决你的问题,请参考以下文章

tableviewcontroller 看不到 configureCell:atIndexPath (使用 restkit 的核心数据)

django:DetailView 如何为两个模型工作或基于类的视图如何为两个模型工作?

如何为图像添加渐变?

如何为用户实现关注者,如在 twitter 中

如何为静态变量分配内存?

如何为每个数组保存一个图像