不同的屏幕阅读器(VoiceOver,NVDA,Narrator)会忽略我在UI不同位置的代码。方法getName(AccessibleEvent e)
被调用并提供正确的结果,但有时会被VoiceOver,NVDA或Narrator忽略。这种行为似乎是随机的。
以下案例适用于VoiceOver,但NVDA完全忽略了它。
Accessible accessible = getControlForAccesible().getAccessible();
accessible.addAccessibleListener(new AccessibleAdapter() {
@Override
public void getName(AccessibleEvent e) {
e.result = getTextForScreenReader();
}
});
此代码位于Composite
的子类中,在我的情况下充当按钮。所以这个按钮里面没有子视图。我使用drawText
- GC
方法绘制文本。它还附加了一个工具提示,也被忽略了。
无论AccessibleAdapter
我使用哪种方法,结果仍然相同,而在我的代码的其他部分,这些不同的方法会提供不同的结果。
有没有人有类似的问题?