Ios UITableView子视图中的可访问性丢失

Ios UITableView子视图中的可访问性丢失,ios,uitableview,accessibility,Ios,Uitableview,Accessibility,我陷入了一个无障碍的难题 我有一个视图需要一个分组样式的tableView和一个普通的tableView(当按下UIBarButtonItem时)。分组的表视图是默认值。我通过添加一个普通视图控制器作为(分组的)tableView的子视图来解决这个问题,然后在返回分组的tableView时将其删除。它工作得很好 我现在正在实施画外音,遇到了一个问题。当显示纯表视图(一个简单的名称列表)时,画外音文本是整个视图的“空列表”。发生的事情是分组表视图仍然存在,并且是空的(零行),只是隐藏在普通表视图后

我陷入了一个无障碍的难题

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

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

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

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

下面是翻转表格代码的简化版本

添加普通表视图:

    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];
    for (UIView *subview in [self.view subviews]) {
        if (subview.tag == 1) {
            [subview removeFromSuperview]; //kills the plain view
            self.tableView.backgroundColor=[UIColor groupTableViewBackgroundColor];
        }
    }
删除普通表视图:

    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];
    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;
没有明显的影响


非常感谢您的帮助。谢谢

我还没有尝试过,但可能会将设置isAccessibilityElement与发送UIAccessibilityLayoutChangedNotification或UIAccessibilityScreenChangedNotification结合起来。

如果对tableView进行子类化,可以通过以下操作关闭其可访问性:



@implementation NonAccessibleTableView

-(BOOL)isAccessibilityElement {
    return NO;
}

- (NSInteger)accessibilityElementCount {
    return 0;
}

- (NSString *)accessibilityLabel {
    return nil;
}

@end


附加地,您可以考虑使用由单个视图控制器管理的2个表视图兄弟姐妹。

,您尝试过<代码> Access?Eclipse SIDIDN =“是/代码”?

我相信您还必须使用
UIAccessibilityPostNotification
发布通知-更改布局或更改屏幕都可以


你让我明白,我忘记了引用SDK@property(非原子)BOOL accessibilityYelementsHidden NS\u AVAILABLE\u IOS(5\u 0)的新方法;