滑动手势在 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 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

滑动以返回在 ios 中的颤振 webview 中不起作用

Xamarin iOS (9.2):手势在模拟器中不起作用

在 UITableViewCell 中滑动手势 UIImageView

滑动手势取消编辑模式后 UITableViewCell 刷新不良

获取有关 UINavigationController 中不成功的向后滑动手势的通知

滑动手势识别器对我不起作用