objective-c – 强制NSAccessibility Voiceover读取未聚焦的OS X文本字段?

objective-c – 强制NSAccessibility Voiceover读取未聚焦的OS X文本字段?,第1张

概述我有一个按钮,按下时会显示一个“辅助”窗口. 通过orderFrontRegardless显示此窗口,但未给出键盘焦点. 该窗口包含一个带有帮助文本的NSTextView. 对于有视觉障碍的用户,我希望OS X的画外音可以在出现时立即读取该窗口文本视图的内容. 我试图让VoiceOver通过以下方式阅读文本: NSAccessibilityPostNotification(textView, NS 我有一个按钮,按下时会显示一个“辅助”窗口.

通过orderFrontRegardless显示此窗口,但未给出键盘焦点.

该窗口包含一个带有帮助文本的NSTextVIEw.

对于有视觉障碍的用户,我希望OS X的画外音可以在出现时立即读取该窗口文本视图的内容.

我试图让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 Voiceover读取未聚焦的OS X文本字段?全部内容,希望文章能够帮你解决objective-c – 强制NSAccessibility Voiceover读取未聚焦的OS X文本字段?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1009963.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存