在每个句子后禁用 TalkBack 使用提示(“双击激活,双击并长按”)

问题描述 投票:0回答:5

我正在使用 Appcelerator for Android 应用程序,

设置accessibilityHint属性后,Talkback完成说出该字符串,暂停并始终显示“双击以激活,双击并按住以长按”。我如何禁用此功能?尝试使用accessibilityLabel或accessibilityValue但没有运气。

在 .xml 文件中

 <Label id='lblAppName' />

在.tss文件中

"#lblAppName":{
  accessibilityHint: 'Double tap here to activate me',
  text: L('app_name'),
  top:Alloy.Globals.sizes10,        
  left:Alloy.Globals.sizes58,
  right:Alloy.Globals.sizes57   
}
android appcelerator-titanium talkback appcelerator-alloy
5个回答
4
投票

TalkBack 宣布这一点是因为它正在检测您的控件是否可以与之交互。例如:一个按钮。鉴于您的标记,特别是您的“accessibilityHint”(我认为它是 Appcelerator 属性),看起来您的控件确实是某种按钮。您为什么要禁用这个有用的公告?

我的答案是删除你的提示,让 Android 操作系统按照它想要的方式处理这个按钮。您的提示并不比 TalkBack 的“提示”更有帮助,最好尽可能让辅助技术共享角色和指导信息。

让 TalkBack 不宣布这一情况的唯一方法是使您的控件成为非交互式。如果 TalkBack 检测到某个控件可以与之交互(单击),它将宣布这些说明,您对此无能为力,也不应该做任何事情。


0
投票

在爪哇中:

ViewCompat.setAccessibilityDelegate(view, new AccessibilityDelegateCompat() {
    @SuppressLint("NewApi")
    public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfoCompat info) {
        super.onInitializeAccessibilityNodeInfo(host, info);
        info.setClickable(true);
        info.setLongClickable(false);
        host.setLongClickable(false);
        info.setContentDescription("Talkback will speak it");
    }
});

在 Kotlin 中:

ViewCompat.setAccessibilityDelegate(<YOUR_TEXTVIEW>, object : AccessibilityDelegateCompat() {
    override fun onInitializeAccessibilityNodeInfo(host: View, info: AccessibilityNodeInfoCompat) {
        super.onInitializeAccessibilityNodeInfo(host, info)
        info.removeAction(AccessibilityNodeInfoCompat.AccessibilityActionCompat.ACTION_CLICK)
        info.isClickable = true
        info.isLongClickable = false
        info.contentDescription = "Talkback will speak it"
        host.isLongClickable = false
    }
})

0
投票

要禁用“双击并长按”消息,请使用此属性:

accessibilityDisableLongPress: true

目前我还没有找到“双击激活”消息的解决方案。 :-(


-1
投票

https://medium.com/android-microsoft/android-accessibility-resolving-common-talkback-issues-3c45076bcdf6

这可能有帮助

ViewCompat.setAccessibilityDelegate(set_actions_button, object : AccessibilityDelegateCompat() {
    override fun onInitializeAccessibilityNodeInfo(v: View, info: AccessibilityNodeInfoCompat) {
        super.onInitializeAccessibilityNodeInfo(v, info)
        info.addAction(AccessibilityActionCompat(
            AccessibilityNodeInfoCompat.ACTION_CLICK, "Edit note"))
        info.addAction(AccessibilityActionCompat(
            AccessibilityNodeInfoCompat.ACTION_LONG_CLICK, "Copy note"))
    }
})

-1
投票

我的一些设备添加了“双击并按住长按”等功能。我只想阅读整个段落并仅添加“双击激活”。所以我这样写;

ViewCompat.setAccessibilityDelegate(<YOUR_TEXTVIEW>, object : AccessibilityDelegateCompat() {
            override fun onInitializeAccessibilityNodeInfo(host: View, info: AccessibilityNodeInfoCompat) {
                super.onInitializeAccessibilityNodeInfo(host, info)
                info.removeAction(AccessibilityNodeInfoCompat.AccessibilityActionCompat.ACTION_CLICK)
                info.isClickable = false
                info.isLongClickable = false
                info.text = "${<YOUR_TEXTVIEW>.text}\n" + "Double tap to activate."
                host.isLongClickable = false
            }
        })
© www.soinside.com 2019 - 2024. All rights reserved.