おそらく明らかでしょうが、私は以前に NSAccessibility で作業をしたことがないので、私が求めているのは私が見落としている単純なものであると想定しています。
15:39 のような期間を表示する NSTextField があります。このテキスト フィールドは、ビューベースの NSTableView 内の NSTableCellView のサブビューです。
VoiceOver を有効にすると、現在は「ワン ファイブ、スリー ナイン」と読み上げられますが、これはまったく役に立たないようです。代わりに、「所要時間は 15 分 39 秒です」と表示してもらいたいのです。
目的の文字列を生成できますが、これを実現するためにどのアクセシビリティ属性を設定する必要があるかわかりません。
IB でアクセシビリティの説明を設定しようとしましたが、効果はありません (NSTextField または NSTextFieldCell で設定しても)。
また、次のカスタム属性値を提供するために、 accessibilityValue :とaccessibilityAttributeValue:forParameter:をオーバーライドしようとしました。
- NSAccessibilityNumberOfCharactersAttribute
- NSAccessibilityStringForRangeParameterizedAttribute
- NSAccessibilityAttributedStringForRangeParameterizedAttribute
- NSAccessibilityStringForRangeParameterizedAttribute。
ナレーションで読み上げられるものを置き換えることができるため、これは正しいトラックのように見えましたが、「15:39」文字列の長さと一致しない NSAccessibilityVisibleCharacterRangeAttribute に NSRange を指定すると、ナレーションが完全にスキップされます。 NSTableCellView のコンテンツを読み取るときのこのフィールド。だから、私ができる最善のことは、「15:39」を読み上げる代わりに、ボイスオーバーに「Durat」と言うようにすることです:(
私が試したことはすべて、NSTextFieldとNSTextFieldCellで試しました。
理想的には、iOS で行うことを行い、NSTableCellView の accessibilityLabel を設定するだけでよいのですが、AppKit でこれを行う合理的な方法はありません。うまくいけば、私は何かが足りないだけです。