NSSegmentedControl的段的自定义辅助功能

时间:2017-06-19 07:17:24

标签: macos accessibility

我有一个NSTouchBar项,其视图为NSSegmentedControl,有4个项目 - A,B,C,D。对于有视力的人来说,这是有意义的,但对于一个人来说谁使用VoiceOver,只是说" A"," B"," C"或" D"没有很好的经验 - 他们可能不明白这究竟是做什么的,所以我想将可访问性标题改为"选择A","执行B" ,"打开C","显示D"。

AFAIK,NSSegmentedControl没有任何关于设置自定义辅助功能标题的方法,因此我进行了更深入的挖掘 - 它似乎为每个细分创建了一个子视图({{1但是它并不重要) - 所以我试过了:

  • 在分段控件本身上将NSSegmentItemView设置为isAccessibilityElement
  • 对于每个子视图,我也将其设置为true,并且我已尝试设置辅助功能标题,标签,......几乎任何有用的内容。

不幸的是,我可以在这些上设置我想要的任何东西,VoiceOver会忽略它。可访问性检查器无法在触摸栏窗口上工作,这个问题变得复杂......

有没有人有任何想法?

2 个答案:

答案 0 :(得分:0)

我试图做类似的事情(在NSSegmentedControl的自定义修改上重新实现可访问性),并且我通过覆盖一些NSAccessibilityProtocol方法获得了大部分成功。

在您的情况下,您可以尝试覆盖accessibilityChildren以返回提供不同标签的自定义元素。

答案 1 :(得分:0)

NSSegmentedControl 将获取图像的辅助功能描述。所以我使用的解决方案是确保我所有的分段控件都有图像,并且对于每个控件,如有必要,制作图像的副本,明确设置可访问性描述,并重置图像。我的一些片段也使用了单字符文本,所以我创建了字符的图像并使用了它们。

丑陋,但比我找到的任何其他解决方案都要好。