iOS - 有没有办法在手势识别器中阻止滑动到正确的行为?

时间:2017-09-23 13:44:25

标签: ios objective-c uigesturerecognizer

我正在修改一个基本上是标准隐藏左侧菜单的模块(向右滑动以显示菜单)

此菜单系统的标准行为是阻止左侧的任何滑动,从而限制了向左滑动以删除tableview中的行的功能。

我添加了此代码,其中成功打开了向左滑动以删除表格中的行的功能。

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{

    if([otherGestureRecognizer isKindOfClass:[UISwipeGestureRecognizer class]])
    {

    }

    return YES;

}

问题是,现在它还允许菜单在任何类型的向右滑动时打开。因此,举例来说,如果你向下滚动,但碰巧向右下方略微向下滚动,菜单就会毫无意义地打开。它非常讨厌

问题

在这里添加适当的代码片段以阻止滑动右手势?

似乎'返回YES'正在打开额外的手势,但我正在努力寻找一种方法在向右滑动时返回NO。原始代码实际上有另一部分,但它似乎没有做任何不同的事情。

在我看来,正是“回归是”正在打开这种行为。如果我能找到一种方法在向右滑动时返回NO可能会这样做吗?

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{

    if([otherGestureRecognizer isKindOfClass:[UISwipeGestureRecognizer class]])
    {
        UISwipeGestureRecognizer *recog = (UISwipeGestureRecognizer *)otherGestureRecognizer;
        if(recog.direction == UISwipeGestureRecognizerDirectionLeft && [recog.view isKindOfClass:[UITableViewCell class]]) return NO;

    }

    return YES;



}

1 个答案:

答案 0 :(得分:0)

你可以尝试这个技巧。向MenuView添加新的UIGestureRecognizer,并在内容中添加UITableView

selector

当然对于gestureRecognizer的选择器:

UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(myMethod:)]; swipe.direction = UISwipeGestureRecognizerDirectionRight; [self.tableView addGestureRecognizer:swipe];