滑动手势在UITableViewCell中无效

时间:2016-02-16 10:39:36

标签: ios objective-c uitableview uiimageview uiswipegesturerecognizer

我的UITableView中有ViewController。有一个自定义UITableViewCell。在该自定义cell中,我有一个UIImageView和多个UILabel。我想在UISwipeGestureRecognizer上添加UIImageView。我已经以编程方式进行了手势,但它无法正常工作。

以下是我所做的代码:

////////// 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
};

3 个答案:

答案 0 :(得分: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];

答案 1 :(得分:0)

请在此

中添加手势委托方法
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
    return YES;
}

这一行与你的手势一起工作

[yourgest setCancelsTouchesInView:NO];

它会起作用..

答案 2 :(得分:0)

我添加&#34;添加手势代码&#34;在单元格的awakeFromNib()中,它可以正常工作

override func awakeFromNib() {
    super.awakeFromNib()
   // add gesture here
}
相关问题