UITableView上的UIAccessibility实现

时间:2013-06-09 09:36:22

标签: uitableview uiaccessibility

我试图理解UITableView可访问性是如何工作的(为了将支持添加到以类似方式工作的其他一些库)。所以我在UITableView的 MyTableView 子类中实现了 UIAccessibilityContainer Protocol

首先,我需要呈现dataSource:

- (id<UITableViewDataSource>)dataSource
{
    return (id<UITableViewDataSource>)[self valueForKey:@"_dataSource"];
}

然后我重新实现:

- (NSInteger)indexOfAccessibilityElement:(id)element
{
    return [[self indexPathForCell:element] row];
}

- (NSInteger)accessibilityElementCount
{
    return [[self dataSource] tableView:self numberOfRowsInSection:0];
}

和可访问性仍然按预期工作。最后一步是实现 - (id)accessibilityElementAtIndex:(NSInteger)index

- (id)accessibilityElementAtIndex:(NSInteger)index
{
    return [[self dataSource] tableView:self cellForRowAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0]];
}

但显然添加此方法的tableview的可访问性停止工作,当导航(使用画外音)到tableview时,我只获得一个VoiceOver“空列表”。有趣的东西单元格正确返回,我得到了大量的 AX错误:找不到我的模拟父母,很可能我是陈旧的。

我正在尝试调查,除非有人提前提出想法,否则我会发布结果。

1 个答案:

答案 0 :(得分:0)

尝试在UITableviewVell类中实现这些UIAccessibilityProtocal方法。让Cell可访问并检查。