ios - 将accessibilityIdentifier添加到UITabBarButton

标签 ios uitabbar

我正在我的应用中显示一个 UITabBar,并尝试将 accessibilityIdentifier 分配给按钮。为了实现这一点,我在每个 View Controller 实例化中使用以下几行:

viewController.tabBarItem.accessibilityIdentifier = @"ViewControllerID";

这些 viewController 都被添加到 UITabBar 中,如下所示:

NSMutableArray *tabBarItems = [NSMutableArray array];

for (NSInteger i=0; i<_viewControllers.count; i++) {
    UIViewController *viewController = [_viewControllers objectAtIndex:i];
    [viewController setCommonTabBarController:self];
    [self addChildViewController:viewController];

    if (i == 0) {
        viewController.view.frame = self.currentTabView.bounds;
        [self.currentTabView addSubview:viewController.view];
        [self addConstraintsToSubView:viewController.view];
        _selectedViewController = viewController;
        _selectedIndex = 0;
    }

    [viewController didMoveToParentViewController:self];
    [tabBarItems addObject:[viewController tabBarItem]];
}

[self.tabBar setItems:tabBarItems animated:animated];

所以,我认为这里应该发生的是,我们正在获取正确设置了 accessibilityIdentifiertabBarItem (当我设置断点时,accessibilityIdentifier每个 View Controller 的都是我所期望的。)然后,当它实际显示时,没有accessibilityIdentifier

我注意到的事情:

iOS 使用 UITabBarButton 而不是 UITabBarItem。我认为这与此有关。当我打印出选项卡栏的 items 数组时,每个项目都有正确的 accessibilityIdentifier,但是,没有一个 UITabBarButton 对象具有关联标签栏项目的 accessibilityIdentifier

有谁知道为什么辅助功能标识符没有“携带”到 iOS 使用的 UITabBarButton 对象?

最佳答案

我在尝试向 UITesting 的 UITabbar 项目添加辅助功能标识符时遇到了同样的问题,我能够使用此解决方法来完成此操作,该解决方法并不完全理智,但它有效:

[self.tabBar setItems:tabBarItems animated:animated];

NSArray *identifiers = @[@"itemIdentifier1", @"itemIdentifier2", @"itemIdentifier3"];
int index = 0;

for (UIControl *control in controller.tabBar.subviews)
{
    if ([control isKindOfClass:UIControl.class] && index < identifiers.count)
    {
        //This is actually the UITabBarButton
        control.accessibilityIdentifier = identifiers[index];
        index++;
    }
}

关键是在添加选项卡后将标识符分配给 UITabbar subview ,这意味着 UITabBarButton 对象已创建并准备好设置标识符。

关于ios - 将accessibilityIdentifier添加到UITabBarButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40404703/

相关文章:

ios - 在 UITabController 中关闭 View Controller

ios - 为什么 Flutter 编译器告诉我我的应用程序不存在?

ios - 仅当 Sprite 位于相机/玩家视野中时,是否可以永远重复 SKaction?

ios - 试图关闭 UIViewController 时出现奇怪的问题

ios - 无法将 UITapGestureRecognizer 添加到 UITabbarController 内的 UITableViewController

iphone - setFinishedSelectedImage :withFinishedUnselectedImage: + Storyboards

ios - ios 顶部带有标签栏的自定义 uitableview

ios - iPhone 上的背景图像大小

ios - 如何设置 UIScrollView 的大小?

uitabbarcontroller - 如何停止隐藏在 tvos 更改焦点中的 TabBar