自定义聊天表情键盘(swift版本)

最近公司没事,自己写了个自定义聊天表情键盘,功能简单,零污染,导入就可以用。右边是github地址(demo源码),喜欢的话给个star,不喜欢可以帮助我修改下(qq.1739002833),谢谢啦~

效果如下:

基本的效果就是表情键盘布局,表情数据的接入,表情插入输入框,图文混排,添加最近常用表情,右下角删除按钮删除输入框内容,右上角发送按钮将文本内容发送给服务器。


基本效果展示
发送服务器输入框文本


最近表情模块

实现逻辑和注意点:

1.界面布局:

在主控制器的view中添加一个Textview,然后自定义一个控制器,将自定义控制器的view作为textview的inputview。在inputview上加了一个UICollectionView和Toolbar.

2数据结构:

用的新浪的表情plist。emoticons.plist中存储了3个表情数组(默认,浪小花,emoji)的id(映射每个表情数组文件夹的名字),每个表情数组文件夹都有对应一个plist,存储着每组表情的属性。

3几个坑和使用:

cell的点击事件异常,粗心的写错了UICollectionViewCell的代理点击方法(在上一篇详细说明了)

图文混排时,设置附件(图片)的大小,但是发现了emoji在图片后面时,尺寸不对,原因是属性字符串有默认的尺寸。解决方法是手动设置了属性字符串的尺寸。当在主控制器中动态设置属性字符串的尺寸(textview的尺寸)时,表情越来越大,解决方法是在继承textview和继承NSTextAttachment的子类中动态设置

最近模块的逻辑是,最新一次点击放在最前面,然后对后面的表情排序,点击次数越多的越靠前

本来是用loadPackages()加载所有数据,最后调试发现这个方法没必要调用多次,就写了个单例,防止多次调用,浪费性能

使用的时候直接在控制器里设置iputview就好了,还有一个发送文本给服务器的按钮,写发给服务器的逻辑就好,获取文本已经写好了,基本是零污染,直接用就好了。

第一次写,多多交流啊~

你可能感兴趣的:(自定义聊天表情键盘(swift版本))