OGeek|极客世界-中国程序员成长平台

标题: iOS - 自定义 UIPickerView 上的意外 VoiceOver 行为 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 13:28
标题: iOS - 自定义 UIPickerView 上的意外 VoiceOver 行为

我的应用中有一个稍微定制的 UIPickerView。基本上我使用 pickerView:viewForRow:forComponent:reusingView 返回一个简单的 UILabel。当我开始着手让应用程序更易于访问时,我注意到 VoiceOver 会读取标签并添加,例如“3 of 300”(即总行数“的”行)。这不是我们想要的行为。

在尝试解决此问题时,我发现如果我使用 pickerView:titleForRow:forComponent 而不是 pickerView:viewForRow:forComponent:reusingView,而没有任何其他更改,那么我只需阅读所选行的“标题”即可获得 VoiceOver 的所需行为。我在 iOS 9 上对此进行了测试。

问题是:如何让 UIPickerView 恢复到“正常”的 VoiceOver 行为,同时仍然使用 pickerView:viewForRow:forComponent:reusingView?感谢您的帮助!



Best Answer-推荐答案


我向 Apple 支持寻求帮助。官方回复是:“我们的工程师已经审查了您的请求,并得出结论认为,鉴于目前的发货系统配置,没有支持的方式来实现所需的功能”。 (为了后代 - 这是最新的 iOS 版本是 9.4 的时候)。他们建议提出新功能的请求,我可以这样做。

为了解决这个问题,我采用了以下解决方法。

因此,当用户运行 VoiceOver 时,他们会得到一个外观丑陋的选择器,但在可访问性方面表现得非常好(即没有行号公告)。我认为这是一个完全合理的“妥协”,因为基本上可以保证用户不会关心视觉外观。

关于iOS - 自定义 UIPickerView 上的意外 VoiceOver 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37041272/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (https://ogeek.cn/) Powered by Discuz! X3.4