当用户直接点击标签栏项目时,如何禁用滑动动画?
Posted
技术标签:
【中文标题】当用户直接点击标签栏项目时,如何禁用滑动动画?【英文标题】:How do I disable swipe animation when user directly tap on tab bar item? 【发布时间】:2019-06-18 06:18:04 【问题描述】:在我的项目中,我启用了一个名为“SwipeableTabBarController”的 coacopods。这些允许我的标签栏视图控制器检测平移手势并在标签之间切换。而且我还编写了一些代码来检测滑动手势,它允许用户隐藏标签栏。 问题:即使用户直接点击栏项目,我的应用也会有幻灯片动画。有什么办法可以解决这个问题?感谢您的帮助!
在检测到点击时尝试禁用滑动和平移手势。但是平移手势不在我的手势数组中。
【问题讨论】:
【参考方案1】:使用isSwipeEnabled = false
禁用滑动功能。默认在SwipeableTabBarController
中设置为true
更新:
因为您正在寻找没有SwipeableTabBarController
库提供的动画的解决方案,但仍需要滑动功能。以下是使用默认 UITabBarController
执行此操作的方法。
第 1 步:
创建一个默认的 UITabBarController
和 2 个视图控制器,我们称它们为 ViewController_1
和 ViewController_2
第 2 步:
为每个ViewController
创建一个类,并在ViewController_1
和ViewController_2
的ViewDidLoad()
方法中添加这些行。
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
按钮进行导航。
希望这会有所帮助。
【讨论】:
谢谢!它似乎不适用于我的代码...我重新启动一个新项目并放置 3 个选项卡项。然后我将 SwipeableTabBarController = false 放入 viewDidLoad() 中。但似乎只要我继承自 SwipeableTabBarController。我还有动画………… 好的,让我尝试重现此问题,看看能否找到解决方案。如果我这样做,我会更新我的答案。 只是想出一个解决方案...不确定这是否是一个好方法,但它可以完成工作..我在 tabBar(_ tabBar: UITabBar, didSelect) 内部使用 beginAppearanceTransition(false animated: false) item: UITabBarItem).. 然后在 touchesEnded() 中重新启用.. 是的,这似乎可以完成这项工作。但是为什么不使用默认的UITabBarController
???你为什么用SwipeableTabBarController
??您是否将其用于滑动功能???
是的.. 我只是针对滑动功能。而SwipeableTabBarController
继承自UITabBarController
.. 所以我假设没有区别?啊啊啊虽然我对swift还是很陌生.....【参考方案2】:
您可以在点击操作中使用 POD isSwipeEnabled = false
的属性
当您点击标签栏项目时,它将禁用滚动动画。
【讨论】:
以上是关于当用户直接点击标签栏项目时,如何禁用滑动动画?的主要内容,如果未能解决你的问题,请参考以下文章