繁体   English   中英

关闭表格视图中单元格的画外音焦点,而不是其他单元格

[英]Turning off Voice-over focus for a cell in table view and not for others

我的表格视图中的第一个单元格是一个虚拟单元格,因此,当画外音模式打开时,我想跳过该单元格,以便焦点不会落在该控件上,因此,语音不会说出它的任何特征超过。 我写了下面粘贴的代码来实现相同的目的,认为仅isAccessibilityElement就足够了。 但似乎并非如此。 尽管我说这个元素在代码中是不可访问的,但它仍然通过在Voice-over模式下向右/向左轻弹来获得焦点。 关于如何实现这一点的任何想法?

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

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

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

当前执行此操作的方法似乎是将单元格上的accessibilityElementsHidden设置为true / YES (取决于是使用 Swift 还是 Obj-C。

似乎比提出的其他答案更清晰,并且在我非常简短的测试中似乎很有效。

只需像这样覆盖单元格的功能accessibilityElementCount

斯威夫特 4.2:

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

这并不理想,但您能否仅在 VoiceOver 未激活时显示单元格? 您可以使用

UIAccessibilityIsVoiceOverRunning()

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

@selector(voiceOverStatusChanged)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM