Как отключить анимацию смахивания, когда пользователь непосредственно нажимает на элемент панели вкладок? - PullRequest
0 голосов
/ 18 июня 2019

В моем проекте я включаю Coacopods под названием «SwipeableTabBarController». Это позволяет моему контроллеру панели вкладок обнаруживать жесты панорамирования и переключаться между вкладками. И я также пишу некоторый код для обнаружения жеста, который позволяет пользователям скрывать панель вкладок. Проблема: мое приложение будет иметь анимацию слайдов, даже когда пользователь непосредственно нажимает на элемент панели. Любой способ решить это? Я ценю любую помощь!

Пытался отключить жесты смахивания и панорамирования при обнаружении касания. Но жесты панорамирования не входят в мой массив жестов.

Ответы [ 2 ]

3 голосов
/ 18 июня 2019

Используйте isSwipeEnabled = false, чтобы отключить функцию прокрутки. По умолчанию установлено значение true в SwipeableTabBarController

UPDATE:

Поскольку вы ищете решение без анимации, предоставляемой библиотекой SwipeableTabBarController, но при этом хотите использовать функцию смахивания. Вот как вы можете сделать это по умолчанию UITabBarController.

Шаг 1: Создайте стандартные контроллеры UITabBarController и 2 вида, давайте назовем их ViewController_1 & ViewController_2

Шаг 2: Создайте класс для каждого ViewController и в методе ViewDidLoad() обоих ViewController_1 & ViewController_2 добавьте эти строки.

override func viewDidLoad() {
    super.viewDidLoad()

    let swipeRight = UISwipeGestureRecognizer(target: self, action:  #selector(swiped))
    swipeRight.direction = UISwipeGestureRecognizer.Direction.right
    self.view.addGestureRecognizer(swipeRight)

    let swipeLeft = UISwipeGestureRecognizer(target: self, action: #selector(swiped))
    swipeLeft.direction = UISwipeGestureRecognizer.Direction.left
    self.view.addGestureRecognizer(swipeLeft)

}

И затем добавляйте эту функцию каждый раз, когда в обоих классах обнаруживается свайп.

@objc  func swiped(_ gesture: UISwipeGestureRecognizer) {
    if gesture.direction == .left {
        if (self.tabBarController?.selectedIndex)! < 2
        {
            self.tabBarController?.selectedIndex += 1
        }
    } else if gesture.direction == .right {
        if (self.tabBarController?.selectedIndex)! > 0 {
            self.tabBarController?.selectedIndex -= 1
        }
    }
}

Это даст вам возможность проводить и перемещаться к различным ViewControllers, а также перемещаться с помощью кнопок Tabbar.

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

0 голосов
/ 18 июня 2019

Вы можете использовать свойство вашего POD isSwipeEnabled = false на вашем действии

Он отключит анимацию прокрутки при нажатии на элементы панели вкладок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...