gpt4 book ai didi

ios - VoiceOver 不读取 UITextField subview

转载 作者:行者123 更新时间:2023-11-29 12:09:02 27 4
gpt4 key购买 nike

我有一些自定义的 UITableViewCells 可以访问。我试图让 VoiceOver 在点击单元格时阅读所有 subview 。根据我的理解,这是你在使用或子类化 UITableViewCell 时免费获得的东西(如果我错了,请纠正我。)

问题出在我的几个单元格中。在我的大多数单元格中,一切都正确读取。但是,当我点击包含 UITextField(或 UITextField 的子类)的单元格时,它不会读取 UITextField。它会读取所有其他元素(除了一个单元格上的 UIButton 之外),但会跳过文本字段。

有谁知道它不读取 UITextFields 的任何原因?还有一个 UIButton?是否需要做一些特别的事情才能让这些人阅读?或者我还没有对 UITableViewCell 子类做一些特殊的事情?

很抱歉没有发布任何代码,我真的不确定发布什么代码是相关的,因为我在代码中根本看不到任何与可访问性相关的内容。在 Storyboard 中,它被选为可供我想阅读的所有元素访问,但 UITextFields 似乎忽略了此设置。

最佳答案

您要做的是创建一个自定义单元格类,并覆盖该类的 accessibilityLabel 属性。收集所有 subview 的可访问性标签。我现在在一台 Windows 机器上,所以如果这不能完全编译,请原谅,但你应该明白了。

@implementation MyCustomCellViewClass

-(NSString*)accessibilityLabel {

NSMutableString* result = [NSMutableString new];
for (subview in [view accessibilityElementViews]) {
[result append:subview.accessibilityLabel];
}
return result;
}

通过将此作为属性覆盖,而不是在它更改的所有潜在点设置可访问性标签,您消除了 future 开发人员覆盖此行为的担忧。您还可以自动处理这些单元格中的动态元素,因为可访问性标签将简单地与 subview 的可访问性信息保持同步。然后,您可以将此类作为任何 future 子类的父类包含在内,以简单地维护此行为。如果您的任何开发人员愚蠢到从继承树中删除这个子类,那么您就有更大的问题要处理了!

使用这种方法确保您的单元具有正确的角色。无论单元格的事件元素是什么(标签、链接、按钮等)都应该是您的 super View 的角色。其他元素仅供引用。

关于ios - VoiceOver 不读取 UITextField subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34069334/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com