Жест панорамирования не работает с SWRevealViewController

Я использую SWRevealViewController, чтобы иметь боковое меню в моем приложении iOS. Контроллеры как переднего, так и заднего вида являются настольными. У моего контроллера переднего вида есть элемент кнопки панели, который отображает контроллер заднего вида, и я также включил жест панорамирования для отображения контроллера заднего вида. Проблема в том, что распознаватель жестов панорамирования работает только в первый раз, но кнопка панели всегда запускает контроллер заднего вида.

Если бы кто-то мог помочь мне исправить это, чтобы жест панорамирования всегда работал, это было бы здорово, спасибо.

SWRevealViewController, который переключает оба представления, запускается из раскадровки. Вот код для контроллера вид спереди:

- (void)setUpSidebarMenu {

    self.navigationItem.leftBarButtonItem.target = self.revealViewController;
    self.navigationItem.leftBarButtonItem.action = @selector(revealToggle:);
    [self.tableView addGestureRecognizer:self.revealViewController.panGestureRecognizer];
    [self.tableView addGestureRecognizer:self.revealViewController.tapGestureRecognizer];
}

Вот код для контроллера заднего вида:

- (void)setUpSidebarMenu {

    self.navigationItem.leftBarButtonItem.target = self.revealViewController;
    self.navigationItem.leftBarButtonItem.action = @selector(revealToggle:);
    [self.tableView addGestureRecognizer:self.revealViewController.panGestureRecognizer];
}

1 ответ

Решено, что в контроллере заднего вида не должно быть кода для панорамирования, а вместо добавления жестов self.tableViewдобавить их в self.view:

[self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];
[self.view addGestureRecognizer:self.revealViewController.tapGestureRecognizer];