react-native 当启用了自动纠正和预测文本功能时,TextInput组件在控制组件时光标会滞后于文本,

jrcvhitl  于 4个月前  发布在  React
关注(0)|答案(9)|浏览(120)

描述

当我们快速输入时,我们发现光标可能会滞后于你正在输入的位置,这意味着字符会被插入到单词的中间。我们认为这是由于自动更正/预测文本扰乱了光标位置。这种情况只发生在完全受控的输入中 - 特别是如果传递给它 value 属性。如果不传递 value,似乎不受影响。
进入设置 > 通用 > 键盘,关闭“自动更正”和“内联显示预测”,可以完全解决这个问题,让我们相信这与 iOS 17 的内联预测文本有关。然而,我们发现通过 autoCorrect 属性禁用自动更正是不稳定的,虽然它略有改善。
我们在 iOS 上观察到了这个问题,但在 iOS 模拟器上更容易复现(可能是因为它运行速度较慢)。

重现步骤

  1. 在 iOS 模拟器上安装应用程序
  2. 以尽可能快的速度在两个文本输入框中输入文字
  3. 注意顶部文本输入框的光标不是文本末尾,底部文本输入框的光标是文本末尾
  4. 转到设置 > 通用 > 键盘,关闭“自动更正”和“内联显示预测”,然后重复操作 - 现在两个输入框都应该正常工作,光标位于文本末尾
    请注意,这种疯狂输入法并不一定能成功,你可能需要尝试几次
66bbxpm5

66bbxpm51#

⚠️React Native的新版本可用!
i️您正在使用受支持的次要版本,但似乎有一个更新的补丁可用 - 0.73.7。请升级到您次要版本的最高补丁或最新版本,并验证问题是否仍然存在(或者,创建一个新项目并在其中重现问题)。如果无法重现,请告知我们,以便我们关闭此问题。这有助于确保我们关注仍在最近版本中存在的问题。
blmhpbnm

blmhpbnm2#

你好,@mozzius,感谢你提出这个问题以及提供复现方法,这非常有价值。
顺便说一下,我也曾见过光标在完全原生的应用中跳动。我们肯定会调查这个问题,但这也可能是苹果那边的问题,尤其是如果你提到这个问题开始出现在iOS 17上。
你能在iOS 16设备上测试一下吗?

u4dcyp6a

u4dcyp6a3#

这里有一个16.4模拟器 - 令人惊讶的是,它也在这里。但它仍然是自动更正 - 关闭"自动更正"和"预测"可以解决这个问题。
Screen.Recording.2024-04-19.at.15.21.48.mov

qltillow

qltillow4#

很高兴遇到这个问题,因为我在调试应用程序时,假设我在使用TextInput时做错了什么。
在研究过程中,我想起了几年前的一个变化:https://reactnative.dev/blog/2021/09/01/preparing-your-app-for-ios-15-and-android-12#quicktype-bar
这可能是一个误导,但我只是想把它放在那里,以防它有什么关联。我尝试禁用拼写检查来测试输入,但由于这个bug的不一致性,我很难决定它是否真的有影响。

wh6knrhe

wh6knrhe5#

昨天花了一些时间研究这个问题,似乎问题出在 -[RCTTextInputComponentView _setAttributedString:] 上,当用户在自动更正/拼写检查时连续按键(快速测试方法:只输入数字,它可以完美工作。)时,没有跟上用户的进度(具体来说是位置计算)。

今天或明天我会抽出一些时间深入研究这个问题,但如果有人想尝试一下 - 你非常鼓励这样做 :)

不过我很好奇:@mozzius@megantaylor - 你是否在普通用户输入时也遇到了这个问题?我在手机上输入正常文本时无法重现这个问题。

bq9c1y66

bq9c1y666#

是的,我们在实际设备上使用正常输入法已经能够复现这个问题。

lfapxunr

lfapxunr7#

嘿,@hezi!

@mozzius可能错过了这个问题,正在清理一些票据并被提醒到这个问题。我们确实在设备上也看到了这个问题,尽管没有那么明显。有时候光标确实会跳过一两个字符,但你需要快速输入才能注意到它。

感谢你查看这个问题!

eit6fx6z

eit6fx6z8#

值得注意的是,根据我的经验,这种现象在一些较旧的iPhone上更为普遍。例如,在iPhone X上制作要容易得多,尽管它确实可以在两者上制作。

uemypmqf

uemypmqf9#

我有一个iPhone 14 Pro,这个问题也出现了。当我在iOS模拟器上输入时,有什么解决方法或替代方案吗?

相关问题