關(guān)于react-native-zss-rich-text-editor的富文本編輯器的使用與排坑

按照eact-native-zss-rich-text-editor 操作先下載這個模塊

1讼呢、npm i --save react-native-zss-rich-text-editor
2、安裝README.md說明:
修改安卓項目下的android/app/build.gradle文件:

project.afterEvaluate {
    apply from: '../../node_modules/react-native-zss-rich-text-editor/htmlCopy.gradle';
    copyEditorHtmlToAppAssets(file('../../node_modules/react-native-zss-rich-text-editor'))
} 

這時如果你直接用了這個模塊的話荠藤,你會發(fā)現(xiàn)他一直報無法讀取NavigationType屬性押框。(因為它依賴于react-native-webview-bridge-updated這個庫)
解決辦法:

iOS

  1. 用 xcode's 打開你自己的IOS項目

  1. 點擊你項目的Libraries目錄
  2. 選擇 Add Files to ..

4.找到你項目的node_modules目錄下得response -native-webview-bridge中IOS目錄溪食,把React-Native-Webview-Bridge.xcodeproj添加IOS項目中

5.點擊你的IOS根目錄掘托,選到Build Phases下

  1. 添加你剛剛導入的那個庫

  1. 重新編譯,IOS就可以用了

Android

  1. 添加以下代碼到MainApplication.java`文件下(RN 小于 0.29的)
import com.github.alinz.reactnativewebviewbridge.WebViewBridgePackage;
  1. 添加以下代碼到MainApplication.java文件下
protected List<ReactPackage> getPackages() {
        return Arrays.<ReactPackage>asList(
            new MainReactPackage(),
                new WebViewBridgePackage() //<- this
        );
    }
  1. 添加以下代碼到你的android/setting.gradle文件下逗物,記得有項目依賴的話,就不用重復(fù)添加了
include ':app', ':react-native-webview-bridge'
project(':react-native-webview-bridge').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-webview-bridge/android')

  1. 添加以下代碼到你的android/app/build.gradle文件下
compile project(':react-native-webview-bridge')

  1. 全部完成瑟俭,你可以用安卓接著飆車了

你在使用官方的示例時會發(fā)現(xiàn)以下問題

1翎卓、輸入框滾動條

修改node_modules下的editor.html文件,修改樣式:

html,body{
            overflow-x: hidden;
            overflow-y: auto;
            width: 97%;
            height: 100%;
        }

        div.zss_editor_content {
            font-family: Arial, Helvetica, sans-serif;
            color: #000;
            width: 100%;
            height: 100%;
            -webkit-overflow-scrolling: touch;
            overflow-x: hidden;
            overflow-y: auto;
        }
 #zss_editor_content {
            /*padding-left: 20px;*///注釋掉,不然會出排版問題
            /*padding-right: 10px;*///注釋掉摆寄,不然會出排版問題
        }

2失暴、 內(nèi)容后滾問題坯门,下沉問題
<RichTextEditor
          ref={(r) => this.richtext = r}
          style={styles.richText}
          initialContentHTML={'Hello <b>World</b> <p>this is a new paragraph</p> <p>this is another new paragraph</p>'}
          editorInitializedCallback={() => this.onEditorInitialized()}
          editorInitializedCallback={() => {
            //解決內(nèi)容后滾問題
            this.richtext.setEditorHeight(75);
           //打開后直接聚焦輸入框
            this.richtext.focusContent(true)
          }}
        />
3、使用了隱藏標題方法逗扒,但是每次打開還是會有一閃而過的標題輸入框古戴,修改editor.html的樣式
 #separatorContainer {
            display: none;//默認隱藏
            -webkit-user-select: none;
            padding-left: 10px;
            padding-right: 10px;
        }

 #zss_editor_title {
            display: none;//默認隱藏
            padding-left: 10px;
            padding-right: 10px;
        }

4 、安卓運行很緩慢啥問題矩肩,比如刪一個字或者寫一個字或者添加圖片劇慢

修改包的src/editor.html文件现恼,添加下面這個方法

function getMirrorInfo(element) {
                if (element.mirrorInfo) {
                    return element.mirrorInfo;
                }
                var div = document.createElement('div');
                var style = div.style;
                var hidden = 'hidden';
                var focusOut = 'focusout';
                style.whiteSpace = 'pre-wrap';
                style.wordWrap = 'break-word';
                style.position = 'absolute';
                style.visibility = hidden;
                style.overflow = hidden;
                document.body.appendChild(div);
                element.mirrorInfo = { div: div, span: document.createElement('span') };
                element.addEventListener(focusOut, function cleanup() {
                    delete element.mirrorInfo;
                    document.body.removeChild(div);
                    element.removeEventListener(focusOut, cleanup);
                });
                return element.mirrorInfo;
            }

修改包的src/editor.html文件,zss_editor.getCaretYPosition 方法
原來的代碼

zss_editor.getCaretYPosition = function() {
    var sel = window.getSelection();
                // Next line is comented to prevent deselecting selection. It looks like work but if there are any issues will appear then uconmment it as well as code above.
                //sel.collapseToStart();
                var range = sel.getRangeAt(0);
                var span = document.createElement('span');// something happening here preventing selection of elements
                range.collapse(false);
                range.insertNode(span);
                var topPosition = span.offsetTop;
                span.parentNode.removeChild(span);
                return topPosition;
}

修改后的代碼

zss_editor.getCaretYPosition = function() {
                var selection = window.getSelection();
                var range = selection.getRangeAt(0);
                var container = range.endContainer;
                var selectedNode = container.nodeType === 3 ? container.parentNode : container;
                var position = selectedNode.selectionEnd;
                var _a = getMirrorInfo(selectedNode);
                var div = _a.div;
                var span = _a.span;
                var content = selectedNode.textContent.substring(0, position);
                div.textContent = content;
                span.textContent = (selectedNode.textContent.substring(position)) || '.';
                div.appendChild(span);
                var rect = selectedNode.getBoundingClientRect();
                var top = span.offsetTop - selectedNode.scrollTop + rect.top;
                return top;
            }
5 黍檩、 圖片無法插入叉袍,插入base64編碼的圖片就行了
ImagePicker.openPicker({
includeBase64: true,
width: 300,
height: 400,
cropping: true
}).then(image => {
console.log(image)
let imageSrc = `data:${image.mime};base64,${image.data}`;
this.richtext.insertImage({src: imageSrc});
console.log(image);
});

暫時就遇到這么多了。

至于api啥的刽酱,直接看下面的參數(shù)和const.js文件的方法列表

 static propTypes = {
    initialTitleHTML: PropTypes.string,
    initialContentHTML: PropTypes.string,
    titlePlaceholder: PropTypes.string,
    contentPlaceholder: PropTypes.string,
    editorInitializedCallback: PropTypes.func,
    customCSS: PropTypes.string,
    hiddenTitle: PropTypes.bool,
    enableOnChange: PropTypes.bool,
    footerHeight: PropTypes.number,
    contentInset: PropTypes.object
  };

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末喳逛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子肛跌,更是在濱河造成了極大的恐慌艺配,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件衍慎,死亡現(xiàn)場離奇詭異转唉,居然都是意外死亡,警方通過查閱死者的電腦和手機稳捆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門赠法,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人乔夯,你說我怎么就攤上這事砖织。” “怎么了末荐?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵侧纯,是天一觀的道長。 經(jīng)常有香客問我甲脏,道長眶熬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任块请,我火速辦了婚禮娜氏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘墩新。我一直安慰自己贸弥,他們只是感情好,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布海渊。 她就那樣靜靜地躺著绵疲,像睡著了一般哲鸳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上最岗,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天帕胆,我揣著相機與錄音,去河邊找鬼般渡。 笑死懒豹,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的驯用。 我是一名探鬼主播脸秽,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蝴乔!你這毒婦竟也來了记餐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤薇正,失蹤者是張志新(化名)和其女友劉穎片酝,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挖腰,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡雕沿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了猴仑。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片审轮。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖辽俗,靈堂內(nèi)的尸體忽然破棺而出疾渣,到底是詐尸還是另有隱情,我是刑警寧澤崖飘,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布榴捡,位于F島的核電站,受9級特大地震影響朱浴,放射性物質(zhì)發(fā)生泄漏吊圾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一赊琳、第九天 我趴在偏房一處隱蔽的房頂上張望街夭。 院中可真熱鬧砰碴,春花似錦躏筏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽埃碱。三九已至,卻和暖如春酥泞,著一層夾襖步出監(jiān)牢的瞬間砚殿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工芝囤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留似炎,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓悯姊,卻偏偏與公主長得像羡藐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子悯许,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容