使用AMSlideMenu,重新启用滑动手势

时间:2014-06-18 14:04:29

标签: ios objective-c

使用https://github.com/SocialObjects-Software/AMSlideMenu

中的AMSlideMenu需要帮助

在我创建的项目中,我需要禁用AMSlideMenu滑动,以便我可以使用UISwipeGestureRecognize执行其他操作。

主要滑动已被停用[self disableSlidePanGestureForLeftMenu];并且可以通过按menuBtn访问该菜单,但我想使用UISwipeGestureRecognizer似乎禁用的AMSlideMenu

关于如何重新获得UISwipeGestureRecognizer项目的任何想法?

谢谢!

- (void)viewDidLoad
{
     [super viewDidLoad];
     [self disableSlidePanGestureForLeftMenu];

     UIButton *menuBtn = [UIButton buttonWithType:UIButtonTypeCustom];
     [menuBtn addTarget:self
           action:@selector(menuButtonTapped:)
 forControlEvents:UIControlEventTouchUpInside];
     [self.view addSubview:menuBtn];

     UISwipeGestureRecognizer *leftSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action: @selector(swipeRecognized:) ];
     [leftSwipe setDirection:UISwipeGestureRecognizerDirectionLeft];
     [self.view addGestureRecognizer:leftSwipe];

     UISwipeGestureRecognizer *rightSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action: @selector(swipeRecognized:) ];
     [rightSwipe setDirection:UISwipeGestureRecognizerDirectionRight];
     [self.view addGestureRecognizer:rightSwipe];
}

- (void)menuButtonTapped:(id)sender
{
    [self.mainSlideMenu openLeftMenu];
}

-(void) swipeRecognized:(UISwipeGestureRecognizer *)swipe {
    int pageNum; 
    switch (swipe.direction)
    {
        case UISwipeGestureRecognizerDirectionLeft:{
            pageNum++;
            break;
        }
        case UISwipeGestureRecognizerDirectionRight:{
            pageNum--;
            break;
        }
        default:
        break;
    }
}

2 个答案:

答案 0 :(得分:1)

在表视图中更改手势

- (void)viewDidLoad
{
     [super viewDidLoad];
     [self disableSlidePanGestureForLeftMenu];

     UIButton *menuBtn = [UIButton buttonWithType:UIButtonTypeCustom];
     [menuBtn addTarget:self
           action:@selector(menuButtonTapped:)
 forControlEvents:UIControlEventTouchUpInside];
     [self.view addSubview:menuBtn];

     UISwipeGestureRecognizer *leftSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action: @selector(swipeRecognized:) ];
     [leftSwipe setDirection:UISwipeGestureRecognizerDirectionLeft];
     [self.tableView addGestureRecognizer:leftSwipe];

     UISwipeGestureRecognizer *rightSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action: @selector(swipeRecognized:) ];
     [rightSwipe setDirection:UISwipeGestureRecognizerDirectionRight];
     [self.tableView addGestureRecognizer:rightSwipe];
}

- (void)menuButtonTapped:(id)sender
{
    [self.mainSlideMenu openLeftMenu];
}

-(void) swipeRecognized:(UISwipeGestureRecognizer *)swipe {
    int pageNum; 
    switch (swipe.direction)
    {
        case UISwipeGestureRecognizerDirectionLeft:{
            pageNum++;
            break;
        }
        case UISwipeGestureRecognizerDirectionRight:{
            pageNum--;
            break;
        }
        default:
        break;
    }
}

现在只需添加一个委托方法

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

    return YES;
}

答案 1 :(得分:0)

您需要从左侧菜单控制器类停止左/右平移手势。

然后为特定的视图控制器设置滑动手势。

按照以下步骤停止左侧菜单的滑动手势:

1)转到AMSlideMenuMainViewController.m类,选择- (void)setup方法。

2)注释此方法后面的行将停止滑动手势。

    self.panGesture = [[UIPanGestureRecognizer alloc] init];
    [self.panGesture addTarget:self action:@selector(handlePanGesture:)];


    [self.currentActiveNVC.view addGestureRecognizer:self.panGesture];

3)评论这些行后,在ViewController中创建一个滑动手势并处理您的自定义逻辑。