「每日一坑」React Native中TextInput组件光标乱跳问题

每日一坑文章系列用来记录日常工作生活中碰到的问题及解决方案,不限于技术类。

问题

今天碰到但没有解决的一个问题是React Native中的TextInput组件在Android下用做Markdown编辑器时出现光标乱跳甚至程序崩溃。

描述

知界的Markdown编辑器是基于React Native框架中的TextInput组件直接封装实现的。这里疯狂地吐槽一下这个组件,之前有几个版本碰到因中文输入问题导致光标乱跳。

编辑器工具栏按钮是帮助用户输入特定格式的文本,这就需要在插入文本时控制光标位置,目前的方案是对inputRef调用setNativeProps设置因插入数据导致的光标位置变换,在最近几个RN的版本中,Android系统环境又碰到一个问题,selection设置和onSelectionChanged一个写入一个读取引发死循环,光标乱跳,甚至引发程序崩溃。

分析其原因,是因为编辑文本时,文本变更会触发selection变更,此问题已经有了PR且已合并进了0.62分支。

给EXPO项目提交了一个ISSUE,这个bug fix已经被cherrypick到发布分支,只能在新SDK发布后,知界的下一版本修复此问题。当前知界的Android版本Markdown编辑器按钮功能不能尽如人意。

此外,当前直接在Expokit上做patch然后自定义发布是一件非常复杂的事情,之前尝试过一次放弃了。另一种思路是对Expokit对应的aar文件进行拆解,直接更新patch过的类文件再封装,这种解决方案比较暴力。

解决

该问题当前还未解决,等解决后给出具体方案。如果你有更好的思路,敬请不吝赐教。

交流

欢迎下载【知界】,做有想法的知识体系管理工具。QQ交流:3607274958


分享到:


相關文章: