Отключение смахивания / жеста в библиотеке SideMenu для xcode - PullRequest
0 голосов
/ 07 июня 2018

Я использовал библиотеку SideMenu из этого репозитория github.https://github.com/jonkykong/SideMenu И после повышения и понижения я не могу придумать, как отключить смахивание на панели навигации viewcontroller.

Я буду использовать пример, включенный в библиотеку, в качестве примера.В файле MainViewController.swift инициируется SideMenu, и, насколько мне известно, существует только 2 методов / функций , связанных с жестом.И ни один из них не имеет отношения к отключению, реагирующему на жест.И я добавил эту строку в метод setUp в файле.

SideMenuManager.default.menuPushStyle = .preserveAndHideBackButton

Я попытался использовать childrenController в этих методах, но как только я это сделал, я не могу использовать swipe / жест на направленном виде после касания предметов слева боковое меню / ящик .

Можно ли вообще отключить жест на панели навигации с помощью этой библиотеки?И, пожалуйста, дайте мне знать, если мне нужно отредактировать вопрос, так как это мой первый вопрос в stackoverflow.

Ответы [ 3 ]

0 голосов
/ 19 июля 2018

Не уверен насчет вашего сценария, но в моем случае, когда пользователь выходит из системы и достигает на экране входа в систему, я хотел отключить жест слева направо.

В то время, когда пользователь нажимает на выход из системы, я установил свойство ниже для0.0 и все.

SideMenuManager.default.menuWidth = 0.0

Теперь снова сбросьте его до 85% после повторного входа пользователя.

0 голосов
/ 05 октября 2018

Я только что понял, как сделать это сам за UITabBarController.Подход будет аналогичным для UINavigationController.Я создал следующую функцию для включения / отключения жестов прокрутки:

/// Keeps references to the gestures created by the SideMenu manager.
private var sideMenuGestures : [UIGestureRecognizer] = []

/// Enables or disables the swipe gestures used to show a SideMenu on the given side (default: left).
func enableSideMenuGestures(_ enable: Bool, forMenu: UIRectEdge = .left) {
    if enable {
        if sideMenuGestures.count == 0 {
            sideMenuGestures.append(SideMenuManager.default.menuAddPanGestureToPresent(toView: self.tabBarController!.view))
            sideMenuGestures.append(contentsOf: SideMenuManager.default.menuAddScreenEdgePanGesturesToPresent(toView: self.tabBarController!.view, forMenu: forMenu))
        }
    } else {
        self.tabBarController?.view.gestureRecognizers?.removeAll(where: { sideMenuGestures.contains($0) })
        sideMenuGestures.removeAll()
    }
}

В вашем случае просто замените self.tabBarController на self.navigationController, и оно должно работать так же.(Префикс self. не требуется, но я хотел бы включить его в качестве соглашения, чтобы показать, что это унаследованное поле, а не то, которое я объявил.)

Это работает, потому что SideMenuManager легко возвращает ссылки на всежесты, которые он создает;в противном случае вам придется очистить все жесты с контроллера навигации, что было бы плохой идеей , как объяснено в этом ответе .

Использование означает просто enableSideMenuGestures(true) в обработчике действий для кнопки, которая отображает меню (например), и enableSideMenuGestures(false), если вы хотите снова отключить жесты.

0 голосов
/ 08 июня 2018

Как показано в демонстрационном примере из вышеупомянутого проекта github,

SideMenuManager.default.menuAddPanGestureToPresent(toView: self.navigationController!.navigationBar)

Эта строка находится в классе 'MainViewController' в методе 'setupSideMenu', который отвечает за добавление жеста панорамирования на панель навигации, который вызывает жест свайпирования.работа для панели навигации.Если вам не нужна эта функция, вы можете просто прокомментировать строку, и она будет работать.

Надеюсь, это поможет ...

...