【问题标题】:Accessibility lost in UITableView subviewUITableView 子视图中的可访问性丢失
【发布时间】:2013-07-10 05:44:34
【问题描述】:

我陷入了可访问性难题。

我的视图需要一个分组样式的 tableView 和(当按下 UIBarButtonItem 时)一个普通的 tableView。分组的 tableView 是默认的。我通过添加一个普通视图控制器作为(分组的)tableView 的子视图来解决这个问题,然后在返回到分组的 tableView 时将其删除。效果很好。

我现在正在实施画外音,但遇到了问题。当显示普通的 tableView(一个简单的名称列表)时,画外音文本是整个视图的“空列表”。发生的事情是分组表视图仍然存在,并且是空的(零行),只是隐藏在普通的 tableView 后面。 (从技术上讲,普通 tableView 是分组 tableView 的子视图,使用与分组 tableView 相同的 CGRect,因此看不到背景。)

我想做的是从画外音中“隐藏”空的分组 tableView,以便对普通 tableView 的点击变为活动状态(说出单元格内容)。 isAccessiblityItem 布尔值似乎没有效果。

我确实理解包含分组视图和普通视图的单个视图是非标准的,但在这里使用它确实有意义,因此不能选择更改布局。

这是一个简化版的翻桌代码。

添加普通的tableView:

    UITableView *plainTableView = plainViewController.tableView;
    plainTableView.frame=groupedTableViewFrame;
    plainTableView.delegate=self;
    plainTableView.dataSource=self;
    plainTableView.tag=1;
    self.tableView.backgroundColor=[UIColor whiteColor];
    [self.view addSubview:plainTableView];
    [plainViewController release];

删除普通的tableView:

    for (UIView *subview in [self.view subviews]) {
        if (subview.tag == 1) {
            [subview removeFromSuperview]; //kills the plain view
            self.tableView.backgroundColor=[UIColor groupTableViewBackgroundColor];
        }
    }

我尝试在添加普通 tableView 时添加各种isAccessibilityItem 设置,例如:

    plainTableView.isAccessibilityElement=YES;
    self.tableView.isAccessibilityElement=NO;

没有明显影响。

非常感谢任何帮助。谢谢!

【问题讨论】:

    标签: ios uitableview accessibility


    【解决方案1】:

    如果您将 tableView 子类化,您可以通过以下方式关闭其可访问性:

    @implementation NonAccessibleTableView -(BOOL)isAccessibilityElement { return NO; } - (NSInteger)accessibilityElementCount { return 0; } - (NSString *)accessibilityLabel { return nil; } @end

    此外,您可能会考虑创建由单个视图控制器管理的 2 个 tableViews 兄弟。

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 你让我明白我忘记引用 SDK 的新方法 @property(nonatomic) BOOL accessibilityElementsHidden NS_AVAILABLE_IOS(5_0);
      【解决方案3】:

      我没有尝试过,但也许将设置 isAccessibilityElement 与发送 UIAccessibilityLayoutChangedNotification 或 UIAccessibilityScreenChangedNotification 结合起来。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-17
        • 2020-10-17
        • 1970-01-01
        • 1970-01-01
        • 2022-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多