在表格视图中关闭单元格的配音焦点,而不为其他人关闭

时间:2012-10-30 11:46:53

标签: ios accessibility

我的表视图中的第一个单元格是一个虚拟单元格,因此,当Voice-over模式为ON时,我想跳过该单元格,以便焦点不会达到该控制 因此,声音没有说出它的特征。我编写下面粘贴的代码来实现同样的目标,认为仅isAccessibilityElement就足够了。但似乎并非如此。 尽管我说这个元素在代码中是不可访问的,但仍然可以通过Voice-over模式中的右/左轻弹来获得焦点。想知道如何实现这一目标吗?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
....
     UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:MyIdentifier];
     if(indexPath.row == 0)
     {
          cell.isAccessibilityElement = 0;
     }
}

4 个答案:

答案 0 :(得分:1)

使用一些自定义单元格,并在该单元格定义中实现:

- (NSInteger)accessibilityElementCount {
    NSIndexPath *indexPath = [(UITableView *)self.superview indexPathForCell: self];
    if(indexPath.row==0){
        return 0;
    }
    else{
        return 1;
    }
}

答案 1 :(得分:1)

目前这样做的方法似乎是将单元格accessibilityElementsHidden设置为true / YES(取决于使用Swift还是Obj-C。

似乎比提出的其他答案更清晰,在我的简短测试中看起来很有效。

答案 2 :(得分:1)

只需像这样覆盖单元格的函数 accessibilityElementCount

斯威夫特 4.2:

override func accessibilityElementCount() -> Int {
   return 0
}

答案 3 :(得分:0)

这不是理想的,但是当VoiceOver未激活时,您是否只能显示单元格?

可以使用

UIAccessibilityIsVoiceOverRunning()

在您的应用加载时查看VoiceOver是否已开启的功能,并注册

@selector(voiceOverStatusChanged)

通知,以便在用户启用或禁用画外音时通知您。有关详细信息,请参阅以下博客文章。 < http://useyourloaf.com/blog/2012/05/14/detecting-voiceover-status-changes.html>