如何为 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*)senderif([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 的核心数据)