繁体   English   中英

点击手势+长按手势无法同时使用

[英]Tap Gesture + Long Press Gesture both not working Together

我想在视图中一起使用轻击手势和长按手势。 但我的问题是,我无法在点击时运行轻击手势动作。 但是长按手势效果很好。

这是代码片段。

            UILongPressGestureRecognizer *longPressGesture=[[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(ontappLongPressGesture:)];
            longPressGesture.minimumPressDuration=0.6;

            longPressGesture.delegate=self;
            [cell.view addGestureRecognizer:longPressGesture];

            UITapGestureRecognizer *gesture=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(cellSelected:)];
            //[gesture requireGestureRecognizerToFail:longPressGesture]; //I have tried with this line also but not working
            gesture.delegate=self;
            [cell.view addGestureRecognizer:gesture];

我也设置了委托方法

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

长按会调用此方法

- (void)ontappLongPressGesture:(id)sender{

    //Long press code here

}

但是这种方法不会在点击时被调用

-(void)cellSelected:(id)sender {

     //Single tap code here

}

您还没有指定将这些gestureRecognizer放在哪种类型的视图上,但是因为您将其称为“单元格”,我假设它在UITableView上?

如果需要,您需要确保设置cancelsTouchesInView标志:

gesture.cancelsTouchesInView=NO;

您需要使用以下两种方法之一。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    // test if our control subview is on-screen
    if (cell.view.superview != nil) {
        if ([touch.view isDescendantOfView:cell.view]) {
            // we touched our control surface
            return YES; // handle the touch
        }
    }
    return NO; // ignore the touch
}

在这里,您需要指定想要的姿态手势视图。

或者您也可以使用这些代码行

gesture.cancelsTouchesInView = NO; 
longPressGesture.cancelsTouchesInView = NO;

希望它会对你有所帮助。

据我了解,您对UITableViewCell使用了这些手势。 你为什么不使用tableView:didSelectRowAtIndexPath: ?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM