Использование AMSlideMenu, повторное включение жеста салфетки

#ios #objective-c

#iOS #objective-c

Вопрос:

Нужна помощь AMSlideMenu с использованием https://github.com/SocialObjects-Software/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;
    }
}
  

Комментарии:

1. Можете ли вы поделиться / добавить метод swipeRecognized:, который вы написали?

2. Конечно, я обновил свой вопрос с его помощью. На данный момент я только меняю нумерацию страниц вверх и вниз, пока пытаюсь заставить его работать, но как только он заработает, я хотел бы использовать его для навигации по разным разделам

Ответ №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;
}
  

Ответ №2:

Вам нужно остановить жест панорамирования влево / вправо из класса контроллера левого меню.

А затем поместите свой жест салфетки для определенного контроллера представления.

Выполните следующие действия, чтобы остановить жест салфетки для левого меню:

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 и обработайте свою пользовательскую логику.