最近公司沒事,自己寫了個(gè)自定義聊天表情鍵盤,功能簡(jiǎn)單,零污染,導(dǎo)入就可以用。右邊是github地址(demo源碼),喜歡的話給個(gè)star,不喜歡可以幫助我修改下(qq.1739002833),謝謝啦~
效果如下:
基本的效果就是表情鍵盤布局,表情數(shù)據(jù)的接入,表情插入輸入框,圖文混排,添加最近常用表情,右下角刪除按鈕刪除輸入框內(nèi)容,右上角發(fā)送按鈕將文本內(nèi)容發(fā)送給服務(wù)器。



實(shí)現(xiàn)邏輯和注意點(diǎn):
1.界面布局:
在主控制器的view中添加一個(gè)Textview,然后自定義一個(gè)控制器,將自定義控制器的view作為textview的inputview。在inputview上加了一個(gè)UICollectionView和Toolbar.
2數(shù)據(jù)結(jié)構(gòu):
用的新浪的表情plist。emoticons.plist中存儲(chǔ)了3個(gè)表情數(shù)組(默認(rèn),浪小花,emoji)的id(映射每個(gè)表情數(shù)組文件夾的名字),每個(gè)表情數(shù)組文件夾都有對(duì)應(yīng)一個(gè)plist,存儲(chǔ)著每組表情的屬性。
3幾個(gè)坑和使用:
cell的點(diǎn)擊事件異常,粗心的寫錯(cuò)了UICollectionViewCell的代理點(diǎn)擊方法(在上一篇簡(jiǎn)書詳細(xì)說(shuō)明了)
圖文混排時(shí),設(shè)置附件(圖片)的大小,但是發(fā)現(xiàn)了emoji在圖片后面時(shí),尺寸不對(duì),原因是屬性字符串有默認(rèn)的尺寸。解決方法是手動(dòng)設(shè)置了屬性字符串的尺寸。當(dāng)在主控制器中動(dòng)態(tài)設(shè)置屬性字符串的尺寸(textview的尺寸)時(shí),表情越來(lái)越大,解決方法是在繼承textview和繼承NSTextAttachment的子類中動(dòng)態(tài)設(shè)置
最近模塊的邏輯是,最新一次點(diǎn)擊放在最前面,然后對(duì)后面的表情排序,點(diǎn)擊次數(shù)越多的越靠前
本來(lái)是用loadPackages()加載所有數(shù)據(jù),最后調(diào)試發(fā)現(xiàn)這個(gè)方法沒必要調(diào)用多次,就寫了個(gè)單例,防止多次調(diào)用,浪費(fèi)性能
使用的時(shí)候直接在控制器里設(shè)置iputview就好了,還有一個(gè)發(fā)送文本給服務(wù)器的按鈕,寫發(fā)給服務(wù)器的邏輯就好,獲取文本已經(jīng)寫好了,基本是零污染,直接用就好了。
第一次寫簡(jiǎn)書,多多交流啊~