描述
当我们快速输入时,我们发现光标可能会滞后于你正在输入的位置,这意味着字符会被插入到单词的中间。我们认为这是由于自动更正/预测文本扰乱了光标位置。这种情况只发生在完全受控的输入中 - 特别是如果传递给它 value
属性。如果不传递 value
,似乎不受影响。
进入设置 > 通用 > 键盘,关闭“自动更正”和“内联显示预测”,可以完全解决这个问题,让我们相信这与 iOS 17 的内联预测文本有关。然而,我们发现通过 autoCorrect
属性禁用自动更正是不稳定的,虽然它略有改善。
我们在 iOS 上观察到了这个问题,但在 iOS 模拟器上更容易复现(可能是因为它运行速度较慢)。
重现步骤
- 在 iOS 模拟器上安装应用程序
- 以尽可能快的速度在两个文本输入框中输入文字
- 注意顶部文本输入框的光标不是文本末尾,底部文本输入框的光标是文本末尾
- 转到设置 > 通用 > 键盘,关闭“自动更正”和“内联显示预测”,然后重复操作 - 现在两个输入框都应该正常工作,光标位于文本末尾
请注意,这种疯狂输入法并不一定能成功,你可能需要尝试几次
9条答案
按热度按时间66bbxpm51#
blmhpbnm2#
你好,@mozzius,感谢你提出这个问题以及提供复现方法,这非常有价值。
顺便说一下,我也曾见过光标在完全原生的应用中跳动。我们肯定会调查这个问题,但这也可能是苹果那边的问题,尤其是如果你提到这个问题开始出现在iOS 17上。
你能在iOS 16设备上测试一下吗?
u4dcyp6a3#
这里有一个16.4模拟器 - 令人惊讶的是,它也在这里。但它仍然是自动更正 - 关闭"自动更正"和"预测"可以解决这个问题。
Screen.Recording.2024-04-19.at.15.21.48.mov
qltillow4#
很高兴遇到这个问题,因为我在调试应用程序时,假设我在使用TextInput时做错了什么。
在研究过程中,我想起了几年前的一个变化:https://reactnative.dev/blog/2021/09/01/preparing-your-app-for-ios-15-and-android-12#quicktype-bar
这可能是一个误导,但我只是想把它放在那里,以防它有什么关联。我尝试禁用拼写检查来测试输入,但由于这个bug的不一致性,我很难决定它是否真的有影响。
wh6knrhe5#
昨天花了一些时间研究这个问题,似乎问题出在
-[RCTTextInputComponentView _setAttributedString:]
上,当用户在自动更正/拼写检查时连续按键(快速测试方法:只输入数字,它可以完美工作。)时,没有跟上用户的进度(具体来说是位置计算)。今天或明天我会抽出一些时间深入研究这个问题,但如果有人想尝试一下 - 你非常鼓励这样做 :)
不过我很好奇:@mozzius@megantaylor - 你是否在普通用户输入时也遇到了这个问题?我在手机上输入正常文本时无法重现这个问题。
bq9c1y666#
是的,我们在实际设备上使用正常输入法已经能够复现这个问题。
lfapxunr7#
嘿,@hezi!
@mozzius可能错过了这个问题,正在清理一些票据并被提醒到这个问题。我们确实在设备上也看到了这个问题,尽管没有那么明显。有时候光标确实会跳过一两个字符,但你需要快速输入才能注意到它。
感谢你查看这个问题!
eit6fx6z8#
值得注意的是,根据我的经验,这种现象在一些较旧的iPhone上更为普遍。例如,在iPhone X上制作要容易得多,尽管它确实可以在两者上制作。
uemypmqf9#
我有一个iPhone 14 Pro,这个问题也出现了。当我在iOS模拟器上输入时,有什么解决方法或替代方案吗?