这可能很明显,但是我以前从未使用 NSAccessibility 做过任何工作,所以我假设我所问的是我忽略的一些简单的事情。
我有一个 NSTextField 显示这样的持续时间,15:39。此文本字段是基于视图的 NSTableView 中 NSTableCellView 的子视图。
启用 VoiceOver 后,它当前会显示“一五,三九”,这似乎完全没用。相反,我希望它说“持续时间是 15 分 39 秒”。
我可以生成所需的字符串,但我无法弄清楚我必须设置哪些可访问性属性才能实现这一点。
我尝试在 IB 中设置可访问性描述,但没有效果(无论是在 NSTextField 还是 NSTextFieldCell 上设置)。
我还尝试覆盖accessibilityValue:和accessibilityAttributeValue:forParameter:以便为以下内容提供自定义属性值:
- NSAccessibilityNumberOfCharactersAttribute
- NSAccessibilityStringForRangeParameterizedAttribute
- NSAccessibilityAttributedStringForRangeParameterizedAttribute
- NSAccessibilityStringForRangeParameterizedAttribute。
这似乎是正确的轨道,因为这确实允许我替换通过配音大声朗读的内容,但是,为 NSAccessibilityVisibleCharacterRangeAttribute 提供与“15:39”字符串的长度不匹配的任何 NSRange 会导致配音完全跳过当读取 NSTableCellView 的内容时这个字段。所以,我能做的最好的就是让旁白说“Durat”,而不是读出“15:39”:(
我尝试过的一切,我都尝试过 NSTextField 和 NSTextFieldCell。
理想情况下,我更愿意做我在 iOS 中所做的事情,只设置 NSTableCellView 的accessibilityLabel,但我认为在 AppKit 中没有合理的方法可以做到这一点。希望我只是错过了一些东西。