每日一坑文章系列用来记录日常工作生活中碰到的问题及解决方案,不限于技术类。
问题
今天碰到但没有解决的一个问题是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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。