我的表视图中的第一个单元格是一个虚拟单元格,因此,当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;
}
}
答案 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>