ios - 尽快禁用选项卡栏项目单击事件

标签 ios swift uitabbarcontroller uitabbar uitabbaritem

enter image description here enter image description here

当单击 UITableView 单元格时,弹出菜单会从底部出现,并带有动画并覆盖选项卡栏。
我想在单击单元格并出现弹出菜单时阻止选项卡栏项目的单击事件。
所以我制作了一个自定义的UITabBarController,它符合UITabBarContorllerDeleagte,如下所示

// CustomTabBarController.swift
class CustomTabBarController: UITabBarController, UITabBarControllerDelegate {
    var enabled = true 
    func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
        return enabled
    }
} 

实例属性 enabled 在单击表格单元格时设置为 false,在弹出菜单消失时设置为 true。
问题是,当我非常快速地依次单击单元格和选项卡栏时,会出现弹出菜单并且选项卡也会更改。我认为标签栏项目单击事件是在变量 enabled 更改之前执行的。
使用 UITabBarControllerisUserInteractionEnabled 并禁用每个选项卡栏项目具有相同的结果。我该如何解决这个问题?

最佳答案

单击单元格时,可以设置tabBarController?.tabBar.isUserInteractionEnabled = false。 在弹出窗口的完成处理程序中,关闭后,设置 tabBarController?.tabBar.isUserInteractionEnabled = true

关于ios - 尽快禁用选项卡栏项目单击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48970940/

相关文章:

iPhone Dev - "More"TabBarItem - 如何更改标题?

ios - 在后台运行时测量 iPhone 高度

ios - 通过试用购买自动续订购买后应用程序崩溃

ios - 隐藏导航栏导致 View 向上移动

objective-c - 使用 UITabBarController 从 PresentingViewController 调用方法

ios - 应用程序在 iOS 中显示黑屏

iphone - Cocos2D iPhone - 屏幕坐标 x Sprite 的内部坐标

ios - 组织多个 NSURLSessionTasks

Swift 5.5 并发 : creating a task with custom error type

ios - 为什么标签栏项目只显示没有图标的标题?