gpt4 book ai didi

objective-c - 强制 NSAccessibility 画外音阅读未聚焦的 OS X 文本字段?

转载 作者:太空狗 更新时间:2023-10-30 03:54:45 25 4
gpt4 key购买 nike

我有一个按钮,按下时会显示一个“助手”窗口。

此窗口已显示,但未通过 orderFrontRegardless 提供键盘焦点.

窗口包含一个 NSTextView里面有帮助文本。

对于有视力障碍的用户,我希望 OS X 的画外音能够在该窗口的 TextView 出现时立即读出其内容。

我试图通过以下方式让 VoiceOver 朗读文本:

NSAccessibilityPostNotification(textView, NSAccessibilityValueChangedNotification);

在我的 NSTextView 的子类中然后我覆盖辅助功能方法:

- (id)accessibilityAttributeValue:(NSString *)attribute
{
//The notification calls this method for attributes:
//AXRole: returns AXTextArea
//AXSharedCharacterRange: returns range of the text view

return [super accessibilityAttributeValue:attribute];
}

通知导致它查询 AXRole ( NSAccessibilityRoleAttribute ) 和 AXSharedCharacterRange (NSAccessibilitySharedCharacterRangeAttribute)。

字符范围正确返回文本区域的范围。

但是,AXValue 绝不是( NSAccessibilityValueAttribute ) 请求。那就是我希望 VoiceOver 阅读文本字段时需要的内容。

为什么是NSAccessibilityValueChangedNotification不请求 TextView 的 NSAccessibilityValueAttribute ?如何让 VoiceOver 朗读文本区域的文本?

最佳答案

我相信如果不将焦点设置到所需的 NSTextView,您就无法做到这一点。

我找到了一个使用 iOS 的解决方案,也许可以在这个 OSX 应用程序中实现:VoiceOver: force an accessibility element to be selected after a screen transition

In iOS you can pass in an accessibility element when posting a UIAccessibilityLayoutChangedNotification or UIAccessibilityScreenChangedNotification as the second argument to UIAccessibilityPostNotification and VoiceOver will focus on that element.

也许您可以使用类似的方法将 NSAccessibility 框架与 NSAccessibilityPostNotification

关于objective-c - 强制 NSAccessibility 画外音阅读未聚焦的 OS X 文本字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18214268/

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