UITabBar 在同时单击 2 个按钮时禁用

Posted

技术标签:

【中文标题】UITabBar 在同时单击 2 个按钮时禁用【英文标题】:UITabBar disables when simulraneously click 2 buttons 【发布时间】:2014-04-14 16:02:49 【问题描述】:

我目前有以下“控制器树”:

UITabBarController ┣━ UIViewController (A) ┃ ┗ MKMapView ┣━ UINavigationController ┃ ┣━ UITableViewController (X) ┃ ┗━ UITableViewController (B) ┣━ UIViewController(没意思) ┗━ UIViewController(没意思)

在第二个视图 (B) 中,我将按钮连接到 IBAction:

- (IBAction)mapButtonTapped:(UIBarButtonItem *)sender 
        UIView *startView = self.tabBarController.selectedViewController.view;
        UIView *endView = ((UIViewController *)[self.tabBarController.viewControllers objectAtIndex:ELMapViewControllerIndex]).view;
        ElMainMapViewController *carparkVC = [self.tabBarController.viewControllers objectAtIndex:ELMapViewControllerIndex];
        [UIView transitionFromView:startView toView:endView duration:ELAnimationDuration
                           options:UIViewAnimationOptionTransitionCrossDissolve
                        completion:^(BOOL finished) 
                        ];
    

代码取自: iPhone: How to switch tabs with an animation?

一切正常——当我点击按钮时,我的第二个选项卡视图略微更改为第一个,一切都按我的意愿工作。

不幸的是,我的 QA 同时单击了返回按钮和连接到上述功能的按钮。这有时会导致锁定UITabBar。我可以移动MKMapView 和任何子视图,但UITabBar 的行为类似于禁用用户交互。

如果这个“组合”没有锁定UITabBar,它有时会导致B中后退按钮附近的“ ViewController 应该薄得多。

我真的不知道如何解决这个问题。我检查了 viewWillAppear 和其他函数,但没有一个与UITabBar 有交易(我在任何其他函数中都没有引用UITabBar)。

编辑

我在 tabBar 中删除了更改选定的索引,但仍然出现此问题。

【问题讨论】:

【参考方案1】:

您需要在开始动画之前禁用控件,然后在完成块中重新启用它们。

对于每个项目,请使用以下内容:

[[[[self.tabBarController tabBar] items] objectAtIndex:1] setEnabled:NO];

然后在动画完成时setEnabled:YES

【讨论】:

以上是关于UITabBar 在同时单击 2 个按钮时禁用的主要内容,如果未能解决你的问题,请参考以下文章

处理同时动作

轮到您启用和禁用按钮

如何禁用多个按钮?

在 kendo ui 网格中以编程方式更改 serverSorting

仅创建一个applet实例并更新其余实例

jQuery UI 禁用整个页面上的所有提交按钮