2012-01-04 41 views
1

我已经走进了一个无障碍难题。在UITableView子视图中丢失的辅助功能

我有一个视图,需要一个分组样式的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; 

这些没有明显的影响。

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

回答

0

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

1

如果子类的tableView,你可以关闭它的辅助功能有以下几点:



@implementation NonAccessibleTableView 

-(BOOL)isAccessibilityElement { 
    return NO; 
} 

- (NSInteger)accessibilityElementCount { 
    return 0; 
} 

- (NSString *)accessibilityLabel { 
    return nil; 
} 

@end 

 

Addtionally,你可能会考虑由一个单一的视图控制器管理的2个tableViews兄弟姐妹。

1
+0

你让我明白,我忘了提及的SDK @property的新方法(非原子)BOOL accessibilityElementsHidden NS_AVAILABLE_IOS(5_0); – thndrkiss 2013-07-30 06:09:14