有没有人在使用PhoneGap时可以使用Android应用程序?至少我们需要使我们的应用符合Section 508标准.
我已经尝试实现一些标准的辅助功能(文本框的标签,向div添加标题属性等).但是,在Android中使用TalkBack和Expore by Touch时,加载我的PhoneGap应用程序时,它只是说"WEB CONTENT" - 就是这样.我的应用程序没有其他任何内容可以大声说出来.
当相同的应用程序在iOS中使用VoiceOver运行时,一切都运行良好.它读取所有"标题"属性就好了.
我正在开发Android辅助功能服务.我有一个表示EditText 的AccessibilityNodeInfo.有可能编辑包含的文本吗?
我尝试过,mynode.setText("aaa")但我得到IllegalStateException官方文档中描述的http://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.html
有任何想法吗?谢谢
我需要帮助一个在用户空闲时触发的模态.它运行良好,直到我在运行NVDA的Firefox上进行测试.使用箭头键时以及在移动设备上滑动时会出现焦点问题.当模态出现并且用户使用箭头或滑动时,如果我等待点击它,焦点将在几秒后从"是"按钮反弹到标题.我已经装了工作示例:https://jsfiddle.net/ncanqaam/
我将空闲时间段更改为一分钟,并删除了调用服务器以扩展用户会话的部分.
var state ="L";
var timeoutPeriod = 540000;
var oneMinute = 60000;
var sevenMinutes = 60000;
var lastActivity = new Date();
function getIdleTime() {
return new Date().getTime() - lastActivity.getTime();
}
//Add Movement Detection
function addMovementListener() {
$(document).on('mousemove', onMovementHandler);
$(document).on('keypress', onMovementHandler);
$(document).on('touchstart touchend', onMovementHandler);
}
//Remove Movement Detection
function removeMovementListener() {
$(document).off('mousemove', onMovementHandler);
$(document).off('keypress', onMovementHandler);
$(document).off('touchstart touchend', onMovementHandler);
}
//Create Movement Handler
function onMovementHandler(ev) {
lastActivity = new Date();
console.log("Something moved, idle time = " + lastActivity.getTime());
}
function …Run Code Online (Sandbox Code Playgroud) 是否有一种默认方式可以在任何时候在焦点元素上按下 enter 时触发点击事件?
我所指的是在专注于 a 时<button>按 Enter 与在专注于 a<div> <li> <span>等时按 Enter 的区别。<button>按键enter按预期触发。但是,<div>按键enter没有任何作用。我相信您必须专门为该按键编写事件。
$('li').click(function() {
//toggles something
});
$("li").keydown(function(e){
if(e.which === 13){
$(this).click();
}
});
Run Code Online (Sandbox Code Playgroud) 问题:我正在尝试使用 React Native 在 Android 和 iOS 上创建一个可访问的链接。使用 VoiceOver 时,iOS 有一个转子,可以选择在屏幕上的链接之间切换,这对以下元素不起作用:
<Text>
Here is some text <Text accessible={true} accessibilityRole="link" onPress={() => Linking.openURL("https://www.google.com")}> Here is a link</Text>
</Text>
Run Code Online (Sandbox Code Playgroud)
在 Android 上使用链接选项在启用 TalkBack 的情况下搜索屏幕上的链接时会发生同样的事情。在上面的代码示例中,在 Android 中双击打开 TalkBack 时不会打开链接,但在 iOS 中双击打开 VoiceOver 的句子可以打开链接。
我试过的事情:我试过像这样拆分 Text 元素:
<View>
<Text> Here is some text</Text>
<Text accessible={true} accessibilityRole="link" onPress={() => Linking.openURL("https://www.google.com")}> Here is a link </Text>
</View>
Run Code Online (Sandbox Code Playgroud)
这确实解决了 Android 上的问题,我可以双击链接并打开网页,当我打开 TalkBack 的链接选项时,它还允许我将其作为链接轻弹,但这不是最佳策略,因为它扰乱了我对视力正常的用户的句子格式。这也不会将链接项添加到 iOS 转子。鉴于这是一个可访问性问题,我还没有找到很多关于如何解决此问题的资源。
结论:我希望能够在链接位于 Android 上的嵌套文本元素中时单击该链接,并且我希望 TalkBack 上的链接控件能够正常工作。我还想在 iOS 上为转子添加链接选项。对于那些不熟悉 iOS 辅助功能转子的人,这里是 …
我们的应用程序因违反相关政策而被 Play 商店拒绝
突出披露 不合规设计
对于政策:辅助功能 API
最初我们使用第 3 方库 cobrowse,他们使用
android.permission.BIND_ACCESSIBILITY_SERVICE
我们的应用程序被拒绝了,之后我们删除了库本身,现在我们的清单中不再要求任何可访问权限,为了遵守显着的披露,我们采取了以下步骤:
注意:即使我们没有使用可访问性 API,我们也保留了其内容,因为即使在删除服务和库之后,我们的拒绝原因仍然是可访问性 API。
目标SDK:31
我们尝试更新内容并添加突出的披露用户界面,但该应用程序尚未被接受。
已经过去 5 周了,Google Play 商店仍然没有任何更新,他们也不回复电子邮件、聊天。
从四月份开始,我们遇到了来自 compose 的 StackOverflowError 错误。我们没有 compose 或 Kotlin 版本更新。
该问题仅发生在 Android 8 上。
我们无法在本地重现,并且根据我们的日志,当打开不同的片段时会发生崩溃。我们有一个包含多个片段的活动,并且没有任何日志来指出根本原因。
我们如何减轻崩溃,这是 compose 内部的事情?
崩溃的根本原因可能是什么?
Fatal Exception: java.lang.StackOverflowError: stack size 8MB
at androidx.compose.ui.platform.CalculateMatrixToWindowApi21.transformMatrixToWindow-EL8BTi8(AndroidComposeView.android.kt:1827)
at androidx.compose.ui.platform.CalculateMatrixToWindowApi21.transformMatrixToWindow-EL8BTi8(AndroidComposeView.android.kt:1822)
at androidx.compose.ui.platform.CalculateMatrixToWindowApi21.transformMatrixToWindow-EL8BTi8(AndroidComposeView.android.kt:1822)
at androidx.compose.ui.platform.CalculateMatrixToWindowApi21.transformMatrixToWindow-EL8BTi8(AndroidComposeView.android.kt:1822)
at androidx.compose.ui.platform.CalculateMatrixToWindowApi21.transformMatrixToWindow-EL8BTi8(AndroidComposeView.android.kt:1822)
at androidx.compose.ui.platform.CalculateMatrixToWindowApi21.transformMatrixToWindow-EL8BTi8(AndroidComposeView.android.kt:1822)
at androidx.compose.ui.platform.CalculateMatrixToWindowApi21.transformMatrixToWindow-EL8BTi8(AndroidComposeView.android.kt:1822)
at androidx.compose.ui.platform.CalculateMatrixToWindowApi21.transformMatrixToWindow-EL8BTi8(AndroidComposeView.android.kt:1822)
at androidx.compose.ui.platform.CalculateMatrixToWindowApi21.transformMatrixToWindow-EL8BTi8(AndroidComposeView.android.kt:1822)
at androidx.compose.ui.platform.CalculateMatrixToWindowApi21.transformMatrixToWindow-EL8BTi8(AndroidComposeView.android.kt:1822)
at androidx.compose.ui.platform.CalculateMatrixToWindowApi21.transformMatrixToWindow-EL8BTi8(AndroidComposeView.android.kt:1822)
at androidx.compose.ui.platform.CalculateMatrixToWindowApi21.calculateMatrixToWindow-EL8BTi8(AndroidComposeView.android.kt:1816)
at androidx.compose.ui.platform.AndroidComposeView.recalculateWindowViewTransforms(AndroidComposeView.android.kt:1446)
at androidx.compose.ui.platform.AndroidComposeView.recalculateWindowPosition(AndroidComposeView.android.kt:1410)
at androidx.compose.ui.platform.AndroidComposeView.localToScreen-MK-Hz9U(AndroidComposeView.android.kt:1390)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.createNodeInfo(AndroidComposeViewAccessibilityDelegateCompat.android.kt:366)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.access$sendScrollEventIfNeeded(AndroidComposeViewAccessibilityDelegateCompat.android.kt)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.access$createNodeInfo(AndroidComposeViewAccessibilityDelegateCompat.android.kt)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat$MyNodeProvider.createAccessibilityNodeInfo(AndroidComposeViewAccessibilityDelegateCompat.android.kt:2424)
at android.view.View.populateVirtualStructure(View.java:8103)
at android.view.View.populateVirtualStructure(View.java:8106)
at android.view.View.populateVirtualStructure(View.java:8106)
at android.view.View.populateVirtualStructure(View.java:8106)
at android.view.View.populateVirtualStructure(View.java:8106)
at android.view.View.populateVirtualStructure(View.java:8106)
at android.view.View.populateVirtualStructure(View.java:8106)
at android.view.View.populateVirtualStructure(View.java:8106)
at android.view.View.populateVirtualStructure(View.java:8106) …Run Code Online (Sandbox Code Playgroud) 我有一个有长按动作处理程序的视图.我使用内容描述来设置消息,当视图获得焦点时,Talkback会说话.
目前它在获得焦点后立即说出了我的内容描述,并在短暂停顿后说:
双击激活,双击并按住长按
我想将此消息更改为类似的内容
双击"动作1",双击并按住"动作2"
有办法吗?
我调查了onPopulateAccessibilityEvent(),它得到了TYPE_VIEW_ACCESSIBILITY_FOCUSED事件,但我无法更改所需的消息.
我错过了一些简单的事吗?
我有一个简单的应用程序,只包含一个AutoCompleteTextView(下面的代码).我有OnItemClickListener和OnItemSelectedListener定义.单击下拉建议中的各个项目会触发该onItemClick事件.但是,使用蓝牙键盘时,使用箭头键导航到给定项目似乎不会触发onItemSelected事件(此事件不会显示日志).
什么触发了这个onItemSelected事件?我的印象是highlight,其中一个下拉项目就是这样,但情况似乎并非如此.
如果OnItemSelectedListener不是突出显示项目的正确事件侦听器,是否满足此要求?
activity_main.xml中
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent">
<AutoCompleteTextView
android:id="@+id/autoCompleteTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
MainActivity.java
public class MainActivity extends Activity {
String[] options = {"a1", "a2", "a3", "b1", "b2", "b3", "b4", "b5"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// An adapter object
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.select_dialog_item, options);
AutoCompleteTextView autoCompleteTextView = (AutoCompleteTextView)findViewById(R.id.autoCompleteTextView);
autoCompleteTextView.setAdapter(adapter);
autoCompleteTextView.setThreshold(1);
// Set …Run Code Online (Sandbox Code Playgroud) 我想知道的是哪个NSScreen具有键盘焦点.
首先,我添加了观察者,NSScreen并且每当NSWorkspace.didActiveApplicationNotification调用方法时,我需要确定哪个foo具有键盘焦点.
NSWorkspace.shared.notificationCenter.addObserver(self, selector: #selector(foo), name: NSWorkspace.didActivateApplicationNotification, object: nil)
Run Code Online (Sandbox Code Playgroud)
我从这个通知中得到的只是NSScreen对象,但它没有告诉我哪个屏幕是关注的.
在NSScreen文档中,我找到了NSScreen的主要属性和描述
返回包含具有键盘焦点的窗口的屏幕对象.
这是我想要的,但它并没有像我想象的那样奏效.它返回错误的屏幕.在头文件中我找到了这个信息
//缓存的值,可能是陈旧的
我尝试过Accessibility,一切都很好,但是当启用Sandbox时它不起作用,所以我无法使用它.
有没有人知道如何通过键盘焦点获取NSScreen对象?
accessibility ×10
android ×7
javascript ×2
jquery ×2
android-a11y ×1
cocoa ×1
cordova ×1
flutter ×1
html ×1
ios ×1
macos ×1
react-native ×1
swift ×1
talkback ×1