如何禁用自定义静态UITableViewCell的可访问性

Alf*_*nso 4 uitableview ios voiceover uiaccessibility

我有一个包含UITableViewController静态内容的故事板.细胞非常简单,只包含一个细胞UILabel.如果我现在想要在其中一个单元格上禁用辅助功能,我只需取消选中标签上的标记即可.这按预期工作.

但是,如果我现在创建一个空子类UITableViewCell并将其用作静态单元格的单元格类,则将启用辅助功能,忽略所有设置.

我尝试覆盖-isAccessibilityElement返回NO,以编程方式将所有子视图accessibilityElement属性设置为NO,但在使用VoiceOver时仍可选择.VoiceOver不会读取内容,只有一个""似乎在那里(在此元素上向上/向下滑动时可以听到).

如何禁用自定义单元格的辅助功能?

deb*_*sej 6

也许,这种方式更容易.

cell.textLabel.accessibilityElementsHidden = YES;
Run Code Online (Sandbox Code Playgroud)

看这篇文章

;)


Alf*_*nso 4

好吧,我找到了一个解决方案,尽管我对此不太满意。

要禁用单元格作为辅助功能元素,您需要将其转换为不带任何元素的辅助功能容器:

@implementation CustomCell

- (BOOL)isAccessibilityElement {
    return NO; // prerequisite for being an accessibility container
}

- (NSInteger)accessibilityElementCount {
    return 0; // hack to disable accessibility for this cell
}

- (id)accessibilityElementAtIndex:(NSInteger)index {
    return nil;
}

- (NSInteger)indexOfAccessibilityElement:(id)element {
    return NSNotFound;
}

@end
Run Code Online (Sandbox Code Playgroud)