检测用户何时进入/离开"滑动以键入" TextInput / EditText(Android)中的模式

时间:2018-03-03 10:08:40

标签: android react-native

这是一个Android问题。

在我的<TextInput>内部(ReactNative(在Android中呈现EditText))当用户键入&#34;#&#34;然后他们使用Androids滑动模式自动完成一个单词,它在&#34;#&#34;之间增加了一个空格。和自动完成的单词。所以我正在做的是onChange文本,我替换了#34;#&#34;之间的空间。然而,当用户处于快速模式时,它确实搞砸了。空间回来了,快速的自动完成混淆了另一个词。

当用户接受自动完成时,是否有反应原生的方式可以听?我想检查前两个字符是否为#(标签和空格),如果是,则将其替换为#(没有空格的#标签)。

我在考虑onCommitCompletion - https://developer.android.com/reference/android/widget/TextView.html#onCommitCompletion(android.view.inputmethod.CompletionInfo) - 在接受建议的词语后开火 - 这是真的吗?如果这是完美的,我可以提交PR反应本机接受这个Android。

以下是有关正在发生的事情的视频:https://gfycat.com/AdmirableGrizzledIrishsetter

低质量:

3 个答案:

答案 0 :(得分:1)

之所以发生这种情况,是因为您正在通过键盘的“滑动”功能键入文本。滑动功能会在字符串前后自动添加额外的空间。无法摆脱它,它是(某些)键盘的集成功能。我们无法控制它。 不用担心,最终用户已经意识到这一点,而他所要做的就是键入整个文本,而不是使用“滑动”功能输入文本。

尝试不确定AutoComplete内部的TextInput吧,也许不确定<TextInput autoCorrect={false}/>

此外,这不仅是Android手机的问题,尝试在Apple设备上安装GBoard,您将面临同样的问题。

答案 1 :(得分:1)

我在大型键盘上工作了2年,我不知道您所说的“快速模式”是什么意思。但是通用键盘API中没有此类功能。它可能是某些特定键盘的功能,但是无法以编程方式将其关闭。

您所描述的内容最接近自动间隔。这不是Android的概念,而是每个单独的键盘的概念。而且由于Android对此一无所知,因此无法将其关闭(用户可以在许多键盘上,但是仅此而已)。

如果您要进行某些工作以覆盖InputConnection或在Java中设置文本观察器并更改要插入的文本,则可以覆盖它(不将其关闭,而是强制空格消失),但是在React Native级别上都无法做到这一点-您需要编写自定义编辑文本,然后将其链接下来以通过Native组件进行React Native。

答案 2 :(得分:0)

我认为这应该是@returns(String) transaction LoadAccountTx { o String accountId } /** * function to load account * @param {org.scsvault.history.LoadAccountTx} loadAccountTx * @returns {string} (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string) * @transaction */ async function loadAccount(loadAccount) { return "This is a test string"; } -我不确定虽然我还不能测试。我认为在此回调中,我将获得该职位,并查看是否有前导空格,如果有,则删除该前导空格。