「每日一坑」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


分享到:


相關文章: