在上篇的基礎(chǔ)上處理:
Weex自定義WXRichText組件實(shí)踐
Weex 富文本 Weex協(xié)議 Weex鏈接 WXRichLabel Weex Label點(diǎn)擊事件
上篇的不足:
處理點(diǎn)擊事件時(shí),是寫死在原生了然低,還是怪當(dāng)時(shí)太年輕,不管是我劲赠,還是weex颗品,用的0.13版本,現(xiàn)在github上都沒有這個(gè)版本,可見當(dāng)時(shí)坑還是有的稠集。
所以,在此基礎(chǔ)上此次的WXRichLabel配置更加自由饥瓷,且能在js拿到點(diǎn)擊事件自由處理剥纷,我本來想的一個(gè)數(shù)組里放可點(diǎn)擊事件的元素,如果字號呢铆,顏色晦鞋,哪些字,jsCall事件棺克,無奈放數(shù)組里了悠垛,到iOS原生就成了一個(gè)字典,當(dāng)時(shí)就無解了娜谊,后面想到要么此界面用原生确买,要么事件寫死在原生,傳入不同的type類型纱皆,顯示不一樣的東西湾趾,不過這樣太不人性化了, 也太死板了派草,純粹就是浪費(fèi)生命啊搀缠。所以后面從大師那里學(xué)到了經(jīng)驗(yàn),用fireEvent事件發(fā)送點(diǎn)擊處的相關(guān)信息近迁。start end color text 等相關(guān)信息艺普,奇妙的是你fireEvent的這個(gè)名字在js里可以直接用@他,就能接收到這個(gè)通知,太神奇了衷敌,然后在參數(shù)里勿侯,就可以拿到這些值了。
使用方法
iOS端
// AppDelegate+Weex里注冊組件
[WXSDKEngine registerComponent:@"richLabel" withClass:[WXRichLabel class]];
weex端
// 畫出你想要的UI
<richLabel class="richLabel" @richClick="richClick" richData="[{'start':'0','end':'5','color':'#f45762'},{'start':'6','end':'10','color':'#f45762'}]" ></richLabel>
// richLabel的點(diǎn)擊事件
richClick: function(e) {
modal.toast({
message: "" + e.start, e.end, e.color, e.text,
duration: 1
});
}
.richLabel {
margin-top: 30;
margin-bottom: 30;
border-width: 2px;
border-style: solid;
border-color: #41b883;
width: auto;
height: 100px;
margin: 20px;
padding: 10px;
font-size: 28px;
normalcolor: #2a2a2a;
text: "我已閱讀并同意《借款協(xié)議》《債權(quán)轉(zhuǎn)讓協(xié)議》《網(wǎng)絡(luò)借貸風(fēng)險(xiǎn)和禁止性行為提示書》";
linespacing: 16px;
width: 690px;
}
https://github.com/songxing10000/WXRichLabel
問題:可點(diǎn)擊文本目前只能是同一個(gè)顏色缴罗,所以我取的richData里每一個(gè)字典里的顏色作為所有可點(diǎn)擊字的顏色助琐。
TTTAttributedLabel里可點(diǎn)擊的文本必須是同一個(gè)顏色,或者是我沒找到設(shè)置不同點(diǎn)擊處文字不顏色的方法面氓,有知道的請告知兵钮,如果有。
解決方案:
一舌界、使用YYText
可實(shí)現(xiàn)為特定字加特定色加特定事件
優(yōu)點(diǎn):兼容性好掘譬。
缺點(diǎn):引用的文件太多。
二呻拌、使用UILable加上tap事件葱轩,富文件顏色,判斷位置
優(yōu)點(diǎn):加個(gè)方法藐握,不用導(dǎo)入多文件靴拱。
缺點(diǎn):兼容性,適應(yīng)性不夠強(qiáng)猾普,換行袜炕,大小,擠壓等初家。