TabBar 按钮出现问题,TabBar 按钮变得不可点击

Posted

技术标签:

【中文标题】TabBar 按钮出现问题,TabBar 按钮变得不可点击【英文标题】:Issue with UITabBar button, TabBar button becomes un clickable 【发布时间】:2013-10-08 04:41:49 【问题描述】:

我正在使用UINavigationBarUITabBar 创建一个视图。我在标签栏上添加了一个按钮,单击按钮时,我隐藏标签栏并在底部显示工具栏。我的代码是为当前和以前的 ios 版本编写的。我正在为 iOS7 使用此代码 self.edgesForExtendedLayout = UIRectEdgeNone; 这是我的代码:

- (void)hideTabBar 
    UITabBar *tabBar = self.tabBarController.tabBar;
    UIView *parent = tabBar.superview; // UILayoutContainerView
    UIView *content = [parent.subviews objectAtIndex:0];  // UITransitionView
    UIView *window = parent.superview;enter code here
    [UIView animateWithDuration:0.5
                     animations:^
                         CGRect tabFrame = tabBar.frame;
                         tabFrame.origin.y = CGRectGetMaxY(window.bounds);
                         tabBar.frame = tabFrame;

//                         CGRect contentFrame = content.frame;
//                         contentFrame.size.height -= tabFrame.size.height;
                         content.frame = window.bounds;
                     ];

     if ([[[UIDevice currentDevice] systemVersion] intValue] < 7.0)
     
    CGRect frame = tbl_AllFiles.frame;
    frame.size.height -=tabBar.frame.size.height;
    tbl_AllFiles.frame = frame;
     



- (void)showTabBar 
    UITabBar *tabBar = self.tabBarController.tabBar;
    UIView *parent = tabBar.superview; // UILayoutContainerView
    UIView *content = [parent.subviews objectAtIndex:0];  // UITransitionView
    UIView *window = parent.superview;

    if ([[[UIDevice currentDevice] systemVersion] intValue] < 7.0)
    
    CGRect frame = tbl_AllFiles.frame;
    frame.size.height +=tabBar.frame.size.height;
    tbl_AllFiles.frame = frame;
    

    [UIView animateWithDuration:0.5
                     animations:^
                         CGRect tabFrame = tabBar.frame;
                         tabFrame.origin.y = CGRectGetMaxY(window.bounds) - CGRectGetHeight(tabBar.frame);
                         tabBar.frame = tabFrame;

                         CGRect contentFrame = content.frame;
                         contentFrame.size.height -= tabFrame.size.height;
                         content.frame = contentFrame;
                     ];

- (void)loadToolBar 

    toolbar = [UIToolbar new];
    toolbar.barStyle = UIBarStyleBlackTranslucent;    


    moveButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [moveButton setFrame:CGRectMake(10, 10, 120, 25)];
    [moveButton setBackgroundColor:[UIColor redColor]];
    [moveButton setTitle:@"Move" forState:UIControlStateNormal];
    [moveButton addTarget:self action:@selector(moveFile_Folder:) forControlEvents:UIControlEventTouchUpInside];

    UIBarButtonItem *moveItem = [[[UIBarButtonItem alloc] initWithCustomView:moveButton] autorelease];
    moveItem.style = UIBarButtonItemStyleBordered;
    NSArray *items = [NSArray arrayWithObjects:moveItem, nil];
    toolbar.items = items;

    [toolbar sizeToFit];
    CGFloat toolbarHeight = [toolbar frame].size.height;
    CGRect mainViewBounds = self.view.bounds;

    if ([[[UIDevice currentDevice] systemVersion] intValue] < 7.0)
    
        [toolbar setFrame:CGRectMake(CGRectGetMinX(mainViewBounds),
                                     CGRectGetMinY(mainViewBounds) + CGRectGetHeight(mainViewBounds) - (toolbarHeight),
                                     CGRectGetWidth(mainViewBounds),
                                     toolbarHeight)];
    
    else
    
        [toolbar setFrame:CGRectMake(CGRectGetMinX(mainViewBounds),
                                 CGRectGetMinY(mainViewBounds) + CGRectGetHeight(mainViewBounds),
                                 CGRectGetWidth(mainViewBounds),
                                 toolbarHeight)];
    

    [self.view addSubview:toolbar];
    [toolbar bringSubviewToFront:self.view];


我的问题是按钮单击 hideTabBar 并调用了 loadToolBar 方法。一切正常,除了我的按钮现在在工具栏上不可点击。 请帮帮我。

【问题讨论】:

附带说明,您是否尝试过 SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0") 我正在使用它。 if ([[[UIDevice currentDevice] systemVersion] intValue] >= 7.0) self.edgesForExtendedLayout = UIRectEdgeNone; 是的,我知道为什么我向您展示了我认为做同样事情的更清洁的方法。关于您的问题,您可以通过单击按钮获得 NSLog 吗? 没有。按钮不可点击。如果我在上面设置了一些工具栏的框架,那么它是可点击的。 我们可以为您的代码提供下载链接吗? 【参考方案1】:

如果您的视图控制器不是根视图控制器,我遇到了类似的问题 iOS 没有获取视图框架。

将此行添加到 viewdidload 中的视图控制器,

self.view.frame = [UIScreen mainScreen].bounds;

希望对你有帮助

【讨论】:

以上是关于TabBar 按钮出现问题,TabBar 按钮变得不可点击的主要内容,如果未能解决你的问题,请参考以下文章

在 TabBar 中将 UIButton 保持在前面

SwiftUI - TabBar 按钮更改

tabbar选中按钮的标题颜色和字体

自定义tabBar

使用按钮移动到带有数据的 TabBar 项

利用按钮打开tabBar页面