当用户直接点击标签栏项目时,如何禁用滑动动画?

How do I disable swipe animation when user directly tap on tab bar item?

在我的项目中,我启用了一个名为 'SwipeableTabBarController' 的 coacopods。这些允许我的选项卡栏视图控制器检测平移手势并在选项卡之间切换。而且我还写了一些代码来检测滑动手势,它允许用户隐藏标签栏。 问题:即使用户直接点击栏项,我的应用程序也会有幻灯片动画。有什么办法可以解决这个问题?感谢您的帮助!

尝试在检测到点击时禁用滑动和平移手势。但是平移手势不在我的手势数组中。

使用isSwipeEnabled = false禁用滑动功能。默认情况下,它在 SwipeableTabBarController

中设置为 true

更新:

由于您正在寻找没有 SwipeableTabBarController 库提供的动画的解决方案,但仍然需要滑动功能。这是使用默认值 UITabBarController.

执行此操作的方法

第 1 步: 创建一个默认的 UITabBarController 和 2 个视图控制器,我们称它们为 ViewController_1 & ViewController_2

第 2 步: 为每个 ViewController 创建一个 class,并在 ViewController_1ViewController_2ViewDidLoad() 方法中添加这些行。

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)

}

然后在 classes 中每次检测到滑动时添加此函数。

@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 按钮进行导航。

希望这对您有所帮助。

您可以在点按操作中使用 POD isSwipeEnabled = false 的 属性

点击标签栏项目时将禁用滚动动画。