用户直接点击选项卡栏项时如何禁用滑动动画?

时间:2019-06-18 06:18:04

标签: swift gesture uipangesturerecognizer

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

试图在检测到轻敲时禁用轻扫和平移手势。但是平移手势不在我的手势数组中。

2 个答案:

答案 0 :(得分:3)

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

中设置为true

更新:

由于您要寻找的解决方案没有SwipeableTabBarController库提供的动画,但仍然需要滑动功能。使用默认的UITabBarController的方法如下。

步骤1: 创建一个默认的UITabBarController和2个View Controller,将它们称为ViewController_1ViewController_2

步骤2: 为每个ViewController创建一个类,并在ViewDidLoad()ViewController_1的{​​{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)

}

这将使您能够滑动和导航到不同的ViewController,也可以使用@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 } } } 按钮进行导航。

希望这会有所帮助。

答案 1 :(得分:0)

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

当您点击标签栏项时,它将禁用滚动动画。