2017-01-06 5 views
0

Я создал структуру бокового меню, используя контроллер представления SWReveal. Что я хочу сделать, это отменить открытие контроллера правого представления на некоторых страницах. Я исследовал и нашел что-то вроде этого:SWRevealViewController rightViewController отключает открытие

- (BOOL)revealControllerPanGestureShouldBegin:(SWRevealViewController *)revealController 

    if([revealController.frontViewController isKindOfClass:[UINavigationController class]]){ 

    UINavigationController *navController = (UINavigationController *)revealController.frontViewController; 

    UIViewController *lastViewController = navController.viewControllers.lastObject; 

    if([lastViewController isKindOfClass:[DetailViewController class]] || 
     [lastViewController isKindOfClass:[TableDateViewController class]] || 
     [lastViewController isKindOfClass:[MapViewController class]]) 
    { 
     return NO; // I do not want to open it for the view controllers I want 
    } 
} 
    return YES; 
} 

Это работает для меня, но это также повлияло на открытии левого page.There нет проблем с сенсорным действием (водопроводная жест), но это относится к лотку gesture.I означает кастрюлю жест делает не работает для контроллера представления. Я хочу работать. Я хочу работать правильно для некоторого контроллера представления, но я не хочу влиять на левую сторону. я добавил правый переключатель, как это:

-(void)sideRightMenuLoad{ 
[((PersonelViewController *)[self.navigationController.viewControllers objectAtIndex:0]).view addGestureRecognizer:self.revealViewController.panGestureRecognizer]; 

SWRevealViewController *revealViewController = self.revealViewController; 
if(revealViewController){ 
    [self.sideRightBarButton setTarget:self.revealViewController]; 
    [self.sideRightBarButton setAction:@selector(rightRevealToggle:)]; 
    [self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer]; 


} 

Этот код должен работать, чтобы открыть правую страницу:

[self performSegueWithIdentifier:SWSegueRightIdentifier sender:nil]; 

Я попытался запустить его, когда я хотел, но это не так Работа. Я жду помощи в этом отношении. Спасибо.

ответ

0

Вы должны проверить направление жеста панорамирования в:

- (BOOL)revealControllerPanGestureShouldBegin:(SWRevealViewController *)revealController { 
if ([revealController.panGestureRecognizer velocityInView:revealController.view].x < 0) { 
    // pan direction left, should open right side 
    // ... 
    return NO; 
} 
return YES; 

}

+0

спасибо! это сработало для меня :) –