Ios UITableView子视图中的可访问性丢失
我陷入了一个无障碍的难题 我有一个视图需要一个分组样式的tableView和一个普通的tableView(当按下UIBarButtonItem时)。分组的表视图是默认值。我通过添加一个普通视图控制器作为(分组的)tableView的子视图来解决这个问题,然后在返回分组的tableView时将其删除。它工作得很好 我现在正在实施画外音,遇到了一个问题。当显示纯表视图(一个简单的名称列表)时,画外音文本是整个视图的“空列表”。发生的事情是分组表视图仍然存在,并且是空的(零行),只是隐藏在普通表视图后面。(从技术上讲,普通tableView是分组tableView的子视图,使用与分组tableView相同的CGRect,因此不会看到背景。) 我想做的是从画外音中“隐藏”空的分组表视图,以便在普通表视图上的点击变为活动(说出单元格内容)。Ios UITableView子视图中的可访问性丢失,ios,uitableview,accessibility,Ios,Uitableview,Accessibility,我陷入了一个无障碍的难题 我有一个视图需要一个分组样式的tableView和一个普通的tableView(当按下UIBarButtonItem时)。分组的表视图是默认值。我通过添加一个普通视图控制器作为(分组的)tableView的子视图来解决这个问题,然后在返回分组的tableView时将其删除。它工作得很好 我现在正在实施画外音,遇到了一个问题。当显示纯表视图(一个简单的名称列表)时,画外音文本是整个视图的“空列表”。发生的事情是分组表视图仍然存在,并且是空的(零行),只是隐藏在普通表视图后
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)的新方法;