Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何让onKeyPress在iOS上通过盲文显示为我提供最后一次按键输入?_Javascript_Ios_React Native_Accessibility - Fatal编程技术网

Javascript 如何让onKeyPress在iOS上通过盲文显示为我提供最后一次按键输入?

Javascript 如何让onKeyPress在iOS上通过盲文显示为我提供最后一次按键输入?,javascript,ios,react-native,accessibility,Javascript,Ios,React Native,Accessibility,我删除了这个问题的前一个版本,因为它到处都是。很抱歉。我用的是React Native。我遇到的问题是,当使用盲文显示器(Orbit Reader 20)在iOS上向TextInput字段输入字母时,我得到的是所有字符的串联字符串,而不是我输入的最后一个字符。我也在安卓上试过,但在安卓上,它的工作方式是我想要的。iOS的表现将类似于Android,但前提是我只关注屏幕上的键盘,而不是实际的输入字段 问题描述(所有字母都用盲文显示):我把注意力集中在输入区域,我输入字母“b”。在输入区域中,出现字

我删除了这个问题的前一个版本,因为它到处都是。很抱歉。我用的是React Native。我遇到的问题是,当使用盲文显示器(Orbit Reader 20)在iOS上向
TextInput
字段输入字母时,我得到的是所有字符的串联字符串,而不是我输入的最后一个字符。我也在安卓上试过,但在安卓上,它的工作方式是我想要的。iOS的表现将类似于Android,但前提是我只关注屏幕上的键盘,而不是实际的输入字段

问题描述(所有字母都用盲文显示):我把注意力集中在输入区域,我输入字母“b”。在输入区域中,出现字母“b”,这就是我希望发生的事情。接下来,我输入字母“c”,在Android上,它只会给我字母“c”,但在iOS上,我得到字符串“bc”,我使用
keyPress.nativeEvent.key
获得密钥。当输入来自盲文设备时,似乎iOS不尊重
maxLength
属性

我尝试过的内容:我尝试过使用
keyPress.nativeEvent.key.slice(-1)
来切掉键的最后一个字母,它确实给出了一个字母,但会干扰画外音和对讲(例如:“a”显示在文本区域,然后我键入“b”,手机显示“ab”)。我发现,如果我使用
textInput.current.clear()
清除输入区域,当触发
onChangeText
时,它将在
keyPress.nativeEvent.key
中提供我想要的结果,它将给我最后一个字母,但它将立即清除我的文本并切断画外音

代码片段(这是我的自定义TextInput组件的代码,只有一些console.log语句,以便我可以看到发生了什么。)


从“React”导入React,{useState,useRef};
从“react native”导入{View,StyleSheet,TextInput};
const BrailleInput=props=>{
const textInput=useRef();
常量[valueLetter,setValueLetter]=使用状态(“”);
常量handleInput=输入=>{
log(“onChangeText:+input”);
};
const handleClear=按键=>{
setValueLetter(keyPress.nativeEvent.key);
日志(“onKeyPress:+keyPress.nativeEvent.key”);
};
返回(
);
};
const styles=StyleSheet.create({
文本输入:{
身高:50%,
宽度:“100%”,
边框颜色:“#ffec33”,
为内容辩护:“中心”,
对齐项目:“居中”,
边框宽度:4,
颜色:“#ffec33”,
textAlign:'中心',
尺码:40
},
});
导出默认输入;
输出: iOS:

安卓:

onKeyPress: a
onChangeText: a
onKeyPress: b
onKeyPress: c 
我希望iOS输出看起来更像Android输出。出于某种原因,它为iOS版本提供了额外的
Backspace
输入,我认为这是画外音无法正常工作的主要原因


最后,我只想让辅助功能集中在
TextInput
区域,让对讲/画外音说出我输入的单个字母,然后能够键入另一个字母来替换上一个字母,冲洗,重复。我需要一个可访问的解决方案,我已经能够创建一个不可访问的解决方案。

FYI:
keypress
已被弃用,不会触发不可打印字符。改为使用
keydown
TextInput
上的
onKeyDown
道具已被弃用并替换为
onKeyDown
?是这样吗?我使用的是React Native。
keypress
事件本身已被弃用。使用
onkeypress
访问它仍然有效,但事件本身不再受支持,因此您应该转到
onkeypdown
以绑定到
keypdown
事件,而不是
keypress
事件。我不明白您的意思<我的代码片段中使用的code>keyPress只是一个变量名。同样在这个例子中,我不在乎它是否会触发不可打印的字符,因为我只想显示A-Z。当我在任何与JavaScript相关的代码中看到onkeypress时,我假设(我相信其他人也是如此)您正在处理
keypress
事件。我只是想让你知道那个活动已经被否决了。仅此而已。仅供参考:
keypress
已弃用,不会触发不可打印字符。改为使用
keydown
TextInput
上的
onKeyDown
道具已被弃用并替换为
onKeyDown
?是这样吗?我使用的是React Native。
keypress
事件本身已被弃用。使用
onkeypress
访问它仍然有效,但事件本身不再受支持,因此您应该转到
onkeypdown
以绑定到
keypdown
事件,而不是
keypress
事件。我不明白您的意思<我的代码片段中使用的code>keyPress只是一个变量名。同样在这个例子中,我不在乎它是否会触发不可打印的字符,因为我只想显示A-Z。当我在任何与JavaScript相关的代码中看到onkeypress时,我假设(我相信其他人也是如此)您正在处理
keypress
事件。我只是想让你知道那个活动已经被否决了。这就是全部。
onKeyPress: a
onChangeText: a
onKeyPress: b
onKeyPress: c