为什么我的 Tabbar 的用户交互在从 popviewcontroller 到另一个视图时启用?
Why my Tabbar's userinteraction is Enabled when come from popviewcontroller to another view?
请检查我的代码哪里有错。
第一次启动我的应用时一切正常
tabBars.tabBar.userInteractionEnabled=NO;
此代码工作正常意味着我的标签栏用户交互已关闭。但是我会转到另一个视图并简单地使用 popViewController
并首先查看我的 userInteraction 已启用,为什么?
我找不到这个问题。
EATabBarVC *tabBars = [[EATabBarVC alloc] init];
UIImage *tabBarImage = [UIImage imageNamed:@"BottomTabBar.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:tabBarImage];
imageView.frame = CGRectMake(self.view.frame.origin.x, 0, self.view.frame.size.width, tabBars.tabBar.frame.size.height);
[imageView sizeToFit];
tabBars.tabBar.userInteractionEnabled=NO;
[tabBars.tabBar insertSubview:imageView atIndex:0];
tabBars.tabBar.tintColor = [UIColor colorWithRed:136/255.f green:159/255.f blue:186/255.f alpha:1];
tabBars.tabBar.tintColor = [UIColor whiteColor];
tabBars.navigationController.navigationBarHidden = YES;
NSMutableArray *localViewControllersArray = [[NSMutableArray alloc] initWithCapacity:3];
EAHomeVC *objEAHomeVC = [[EAHomeVC alloc] init];
UINavigationController *dashboardNavController = [[UINavigationController alloc] initWithRootViewController:objEAHomeVC];
dashboardNavController.navigationBar.hidden = YES;
EAScanLeadsVC *objEAScanLeadsVC = [[EAScanLeadsVC alloc] init];
objEAScanLeadsVC.delegate = self;
objEAScanLeadsVC.tabBarItem.titlePositionAdjustment = UIOffsetMake(0.0, -3.0);
if (IS_IPHONE6PLUS) {
objEAScanLeadsVC.tabBarItem.titlePositionAdjustment = UIOffsetMake(0.0, -6.0);
}
if (IS_IPADAIR2||IS_IPADMINI) {
objEAScanLeadsVC.tabBarItem.titlePositionAdjustment = UIOffsetMake(0.0, -12.0);
}
[objEAScanLeadsVC.tabBarItem setTitleTextAttributes:@{ NSForegroundColorAttributeName : [UIColor colorWithRed:136/255.f green:159/255.f blue:186/255.f alpha:1],NSFontAttributeName : ROBOTOLIGHT(5.39*2.2)}
forState:UIControlStateNormal];
[objEAScanLeadsVC.tabBarItem setTitleTextAttributes:@{ NSForegroundColorAttributeName : [UIColor whiteColor],NSFontAttributeName : ROBOTOLIGHT(5.39*2.2) }
forState:UIControlStateSelected];
UINavigationController *scanNavController = [[UINavigationController alloc] initWithRootViewController:objEAScanLeadsVC];
//scanNavController.title = @"Scan Lead";
scanNavController.tabBarItem.titlePositionAdjustment = UIOffsetMake(0.0, -3.0);
if (IS_IPHONE6PLUS) {
scanNavController.tabBarItem.titlePositionAdjustment = UIOffsetMake(0.0, -6.0);
}
if (IS_IPADAIR2||IS_IPADMINI) {
scanNavController.tabBarItem.titlePositionAdjustment = UIOffsetMake(0.0, -12.0);
}
[scanNavController.tabBarItem setTitleTextAttributes:@{ NSForegroundColorAttributeName : [UIColor colorWithRed:136/255.f green:159/255.f blue:186/255.f alpha:1],NSFontAttributeName : ROBOTOLIGHT(5.39*2.2) }
forState:UIControlStateNormal];
[scanNavController.tabBarItem setTitleTextAttributes:@{ NSForegroundColorAttributeName : [UIColor whiteColor],NSFontAttributeName : ROBOTOLIGHT(5.39*2.2) }
forState:UIControlStateSelected];
[tabBars addCenterButtonWithImage:[UIImage imageNamed:@"TabBarScan.png"] highlightImage:[UIImage imageNamed:@"TabBarScan.png"]];
[localViewControllersArray addObject:dashboardNavController];
[localViewControllersArray addObject:scanNavController];
tabBars.viewControllers = localViewControllersArray;
tabBars.view.autoresizingMask=(UIViewAutoresizingFlexibleHeight);
tabBars.navigationController.navigationBar.hidden = YES;
[tabBars.tabBar setItemWidth:self.view.frame.size.width/3];
[tabBars.tabBarItem setTitleTextAttributes:@{ NSForegroundColorAttributeName : [UIColor colorWithRed:136/255.f green:159/255.f blue:186/255.f alpha:1],NSFontAttributeName : ROBOTOLIGHT(5.39*2.2) }
forState:UIControlStateNormal];
[tabBars.tabBarItem setTitleTextAttributes:@{ NSForegroundColorAttributeName : [UIColor whiteColor],NSFontAttributeName : ROBOTOLIGHT(5.39*2.2) }
forState:UIControlStateSelected];
return [[EABaseCenterVC alloc]
initWithRootViewController:tabBars];
iOS 和其他第 3 方组件具有一些内置行为,可以在 viewWillAppear 或类似的东西上启用它。试着把你的线
tabBars.tabBar.userInteractionEnabled=NO;
在
- (void)viewWillAppear:(BOOL)animated
或
- (void)viewDidAppear:(BOOL)animated
的视图中您想要禁用
的交互
你上面的代码是否在viewDidLoad()中,如果是,那么将其从那里移除并添加到viewWillAppear()中。
试试吧,也许对你有用。
添加此代码可能会有帮助。
- (void)viewWillAppear:(BOOL)animated
{
[[[[self.tabBarController tabBar]items]objectAtIndex:0]setEnabled:FALSE];
[[[[self.tabBarController tabBar]items]objectAtIndex:1]setEnabled:FALSE];
}
- (void)viewDidAppear:(BOOL)animated
{
[[[[self.tabBarController tabBar]items]objectAtIndex:0]setEnabled:FALSE];
[[[[self.tabBarController tabBar]items]objectAtIndex:1]setEnabled:FALSE];
}
请检查我的代码哪里有错。
第一次启动我的应用时一切正常
tabBars.tabBar.userInteractionEnabled=NO;
此代码工作正常意味着我的标签栏用户交互已关闭。但是我会转到另一个视图并简单地使用 popViewController
并首先查看我的 userInteraction 已启用,为什么?
我找不到这个问题。
EATabBarVC *tabBars = [[EATabBarVC alloc] init];
UIImage *tabBarImage = [UIImage imageNamed:@"BottomTabBar.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:tabBarImage];
imageView.frame = CGRectMake(self.view.frame.origin.x, 0, self.view.frame.size.width, tabBars.tabBar.frame.size.height);
[imageView sizeToFit];
tabBars.tabBar.userInteractionEnabled=NO;
[tabBars.tabBar insertSubview:imageView atIndex:0];
tabBars.tabBar.tintColor = [UIColor colorWithRed:136/255.f green:159/255.f blue:186/255.f alpha:1];
tabBars.tabBar.tintColor = [UIColor whiteColor];
tabBars.navigationController.navigationBarHidden = YES;
NSMutableArray *localViewControllersArray = [[NSMutableArray alloc] initWithCapacity:3];
EAHomeVC *objEAHomeVC = [[EAHomeVC alloc] init];
UINavigationController *dashboardNavController = [[UINavigationController alloc] initWithRootViewController:objEAHomeVC];
dashboardNavController.navigationBar.hidden = YES;
EAScanLeadsVC *objEAScanLeadsVC = [[EAScanLeadsVC alloc] init];
objEAScanLeadsVC.delegate = self;
objEAScanLeadsVC.tabBarItem.titlePositionAdjustment = UIOffsetMake(0.0, -3.0);
if (IS_IPHONE6PLUS) {
objEAScanLeadsVC.tabBarItem.titlePositionAdjustment = UIOffsetMake(0.0, -6.0);
}
if (IS_IPADAIR2||IS_IPADMINI) {
objEAScanLeadsVC.tabBarItem.titlePositionAdjustment = UIOffsetMake(0.0, -12.0);
}
[objEAScanLeadsVC.tabBarItem setTitleTextAttributes:@{ NSForegroundColorAttributeName : [UIColor colorWithRed:136/255.f green:159/255.f blue:186/255.f alpha:1],NSFontAttributeName : ROBOTOLIGHT(5.39*2.2)}
forState:UIControlStateNormal];
[objEAScanLeadsVC.tabBarItem setTitleTextAttributes:@{ NSForegroundColorAttributeName : [UIColor whiteColor],NSFontAttributeName : ROBOTOLIGHT(5.39*2.2) }
forState:UIControlStateSelected];
UINavigationController *scanNavController = [[UINavigationController alloc] initWithRootViewController:objEAScanLeadsVC];
//scanNavController.title = @"Scan Lead";
scanNavController.tabBarItem.titlePositionAdjustment = UIOffsetMake(0.0, -3.0);
if (IS_IPHONE6PLUS) {
scanNavController.tabBarItem.titlePositionAdjustment = UIOffsetMake(0.0, -6.0);
}
if (IS_IPADAIR2||IS_IPADMINI) {
scanNavController.tabBarItem.titlePositionAdjustment = UIOffsetMake(0.0, -12.0);
}
[scanNavController.tabBarItem setTitleTextAttributes:@{ NSForegroundColorAttributeName : [UIColor colorWithRed:136/255.f green:159/255.f blue:186/255.f alpha:1],NSFontAttributeName : ROBOTOLIGHT(5.39*2.2) }
forState:UIControlStateNormal];
[scanNavController.tabBarItem setTitleTextAttributes:@{ NSForegroundColorAttributeName : [UIColor whiteColor],NSFontAttributeName : ROBOTOLIGHT(5.39*2.2) }
forState:UIControlStateSelected];
[tabBars addCenterButtonWithImage:[UIImage imageNamed:@"TabBarScan.png"] highlightImage:[UIImage imageNamed:@"TabBarScan.png"]];
[localViewControllersArray addObject:dashboardNavController];
[localViewControllersArray addObject:scanNavController];
tabBars.viewControllers = localViewControllersArray;
tabBars.view.autoresizingMask=(UIViewAutoresizingFlexibleHeight);
tabBars.navigationController.navigationBar.hidden = YES;
[tabBars.tabBar setItemWidth:self.view.frame.size.width/3];
[tabBars.tabBarItem setTitleTextAttributes:@{ NSForegroundColorAttributeName : [UIColor colorWithRed:136/255.f green:159/255.f blue:186/255.f alpha:1],NSFontAttributeName : ROBOTOLIGHT(5.39*2.2) }
forState:UIControlStateNormal];
[tabBars.tabBarItem setTitleTextAttributes:@{ NSForegroundColorAttributeName : [UIColor whiteColor],NSFontAttributeName : ROBOTOLIGHT(5.39*2.2) }
forState:UIControlStateSelected];
return [[EABaseCenterVC alloc]
initWithRootViewController:tabBars];
iOS 和其他第 3 方组件具有一些内置行为,可以在 viewWillAppear 或类似的东西上启用它。试着把你的线
tabBars.tabBar.userInteractionEnabled=NO;
在
- (void)viewWillAppear:(BOOL)animated
或
- (void)viewDidAppear:(BOOL)animated
的视图中您想要禁用
的交互你上面的代码是否在viewDidLoad()中,如果是,那么将其从那里移除并添加到viewWillAppear()中。
试试吧,也许对你有用。
添加此代码可能会有帮助。
- (void)viewWillAppear:(BOOL)animated
{
[[[[self.tabBarController tabBar]items]objectAtIndex:0]setEnabled:FALSE];
[[[[self.tabBarController tabBar]items]objectAtIndex:1]setEnabled:FALSE];
}
- (void)viewDidAppear:(BOOL)animated
{
[[[[self.tabBarController tabBar]items]objectAtIndex:0]setEnabled:FALSE];
[[[[self.tabBarController tabBar]items]objectAtIndex:1]setEnabled:FALSE];
}