SWRevealViewController останавливает жест касания, когда пользователь находится в режиме frontView

Я использую SWRevealViewController для скользящего меню. Я добавил жест касания в виде спереди, используя:

SWRevealViewController *revealController = [self revealViewController];

[revealController tapGestureRecognizer];

Мой тап-жест работает. Но проблема в том, что у моего вида спереди есть кнопка, которая требует нажатий для перехода к другим экранам. Есть ли способ отключить жест касания, когда включен frontView, и включить жест касания при нажатии меню?


person JMS    schedule 08.03.2016    source источник


Ответы (3)


Я думаю, ты пробовал это

создайте делегата в своем классе

@interface xxxViewController () <SWRevealViewControllerDelegate>

в методе делегата как

  - (void)revealController:(SWRevealViewController *)revealController willMoveToPosition:(FrontViewPosition)position
{
    if (position == FrontViewPositionLeftSide) {
        self.tapGestureRecognizer.enabled = YES;
        // disable your current class action

    }
    else if (position == FrontViewPositionLeft){
        self.tapGestureRecognizer.enabled = NO;
        // enable your current class action


    }
}
person Anbu.Karthik    schedule 08.03.2016
comment
self.tapGestureRecognizer.enabled = YES; относится к раскрываемому контроллеру? т.е. в rejectController есть метод [revealController tapGestureRecognizer];. Как включить и отключить это? - person JMS; 08.03.2016
comment
да, да, братан....., посмотри это один раз github.com/John-Lluch/ SWRevealViewController/issues/92 - person Anbu.Karthik; 08.03.2016

Import SWRevealViewController.h в классе выдвижного меню. Затем в вашем скользящем меню viewWillAppear метод поместите эту строку-

-(void) viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:YES];

   self.revealViewController.frontViewController.revealViewController.tapGestureRecognizer.enabled=false;

}

и в методе viewWillDisappear поместите эту строку-

-(void) viewWillDisappear:(BOOL)animated
{

self.revealViewController.frontViewController.revealViewController.tapGestureRecognizer.enabled=true;

}
person Rohit Khandelwal    schedule 08.03.2016

В контроллере Front view добавьте это

SWRevealViewController *objRevealViewController = [self revealViewController];
[self.view addGestureRecognizer:objRevealViewController.tapGestureRecognizer];
person Shrikant Tanwade    schedule 08.03.2016