滑动手势在 UITableViewCell 中不起作用
Posted
技术标签:
【中文标题】滑动手势在 UITableViewCell 中不起作用【英文标题】:Swipe gesture not working in UITableViewCell 【发布时间】:2016-02-16 10:39:35 【问题描述】:我的ViewController
中有UITableView
。有一个自定义UITableViewCell
。在那个自定义cell
中,我有一个UIImageView
和多个UILabel
。我想在那个UIImageView
上添加UISwipeGestureRecognizer
。我以编程方式采取了手势,但它不起作用。
这是我完成的代码:
////////// THIS CODE I TOOK IN CELL FOR ROW METHOD:
swipe=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(Swipe_Handling:)];
swipe.direction=UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight;
[cells.propimage addGestureRecognizer:swipe];
////////////
-(void)Swipe_Handling:(UISwipeGestureRecognizer *)recognizer
if (recognizer.direction==UISwipeGestureRecognizerDirectionRight)
NSLog(@"Right");
else if (recognizer.direction==UISwipeGestureRecognizerDirectionLeft)
NSLog(@"Left");
滑动处理动作被调用,但它没有进入 if-else 条件和cells.propimage.userInteractionEnabled=YES;
。
当我打印NSLog(@"%lu",(unsigned long)recognizer.direction);
它返回给我:3
typedef NS_OPTIONS(NSUInteger, UISwipeGestureRecognizerDirection)
UISwipeGestureRecognizerDirectionRight = 1 << 0,
UISwipeGestureRecognizerDirectionLeft = 1 << 1,
UISwipeGestureRecognizerDirectionUp = 1 << 2,
UISwipeGestureRecognizerDirectionDown = 1 << 3
;
【问题讨论】:
你用过tableView:editingStyleForRowAtIndexPath: 告诉我???? 然后尝试分配 init 两个方向分开 你想要双向滑动吗? ***.com/questions/8564153/… @Anilsolanki 是的,如果我设置一个方向,那么它可以工作..但为什么不两个呢?我想要两个方向滑动。 【参考方案1】:请尝试此代码的 2 个方向
UISwipeGestureRecognizer* gestureR;
gestureR = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom)] autorelease];
gestureR.direction = UISwipeGestureRecognizerDirectionLeft;
[imgview addGestureRecognizer:gestureR];
gestureR = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom)] autorelease];
gestureR.direction = UISwipeGestureRecognizerDirectionRight; // default
[imgview addGestureRecognizer:gestureR];
【讨论】:
太棒了。 ... . . . .【参考方案2】:请在此添加手势委托方法
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
return YES;
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
return YES;
你的手势这条线会起作用
[yourgest setCancelsTouchesInView:NO];
它会工作..
【讨论】:
【参考方案3】:我在单元格的 awakeFromNib() 中添加了“添加手势代码”,它可以工作
override func awakeFromNib()
super.awakeFromNib()
// add gesture here
【讨论】:
以上是关于滑动手势在 UITableViewCell 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
在 UITableViewCell 中滑动手势 UIImageView
滑动手势取消编辑模式后 UITableViewCell 刷新不良