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





Используйте isSwipeEnabled = false, чтобы отключить функцию смахивания. По умолчанию установлено значение true в SwipeableTabBarController
Обновлено:
Поскольку вы ищете решение без анимации, которую предоставляет библиотека 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
}
}
}
Это даст вам возможность прокручивать и переходить к различным ViewController, а также перемещаться с помощью кнопок Tabbar.
Надеюсь это поможет.
Хорошо, позвольте мне попытаться воспроизвести это и посмотреть, смогу ли я найти решение. Если я это сделаю, я обновлю свой ответ.
Просто придумайте решение... Не уверен, что это хороший способ, но он выполняет свою работу. Я использую beginAppearanceTransition(false анимированный: false) внутри tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem).. Затем повторно -включить в touchesEnded()..
Да, похоже, это работает. Но почему бы вам не использовать дефолтный UITabBarController ??? Почему вы используете SwipeableTabBarController ?? Вы используете его для функции салфетки ???
Да .. Я просто стремлюсь к функции прокрутки. И SwipeableTabBarController наследуется от UITabBarController.. Итак, я предполагаю, что разницы нет? аааа, я на самом деле совсем новичок в быстроте, хотя.....
Если вы выберете SwipeableTabBarController, вам придется пожертвовать анимацией при нажатии на элемент панели вкладок. Вместо этого, почему бы вам не создать функцию смахивания по умолчанию? Я обновлю свой ответ некоторым базовым кодом. Затем вы можете настроить его соответствующим образом. Это нормально ?
Я обновил свой ответ. Это должно помочь вам добиться того, что вы пытаетесь сделать, не используя SwipeableTabBarController. Дайте мне знать, если это сработало.
Вы можете использовать свойство вашего POD isSwipeEnabled = false при касании
Это отключит анимацию прокрутки при нажатии на элементы панели вкладок.
Спасибо! Кажется, это не работает для моего кода... Я перезапускаю новый проект и добавляю 3 элемента вкладки. Затем я помещаю SwipeableTabBarController = false внутри viewDidLoad(). Но кажется, пока я наследую от SwipeableTabBarController. Анимация у меня осталась.........