SWift中UITextView编辑时插入自定义表情-简单的图文混编

来源:互联网 发布:linux中解压zip文件 编辑:程序博客网 时间:2024/05/22 06:20

UITextView编辑时插入自定义表情-简单的图文混编

前言

在iOS开发中,经常需要用UITextView作为编辑文本的输入控件。
但是如何在编辑时插入自定义表情呢?就是像QQ,微信里面的表情

本文简单的用NSTextAttachment、NSAttributedString的特性,实现了

在UITextView中编辑文字时插入自定义表情图片
同时可以返回带有表情“替换符”的纯文本字符串。

知识点

NSAttributedString及其子类,用于显示副文本。
NSTextAttachment,NSAttributedString的一种样式类,可以在文本中显示图片。


首先需要明确的是,我们的自定义表情一定是有一一对应的“标志”的,如"[哈哈]"。
就是说,为了方便处理,方便在数据库、网络传输中保存、传输带有表情图片的文本,我们必须要为每种表情取特定的“名字”,数据库中储存的、网络传输的文本就只包含这些标志名字就行,在显示的时候做对应的替换。

如:



对应的纯文本就是:"[哈哈]"

插入并显示表情图片



获取带有表情标志的文本字符串


难点


NSTextAttachment被插入到NSAttributedString中的时候,就被当成了一个字符处理!!!。
就是说,只从UITextView的text中,是找不回文本里面不同的表情所对应的标志的!

解决点


我们要能遍历出当前文本中所有的表情,也就是NSTextAttachment类。
我们要能知道遍历出的表情,对应的标志是什么。
遍历所有的NSTextAttachment类属性


如何绑定NSTextAttachment所表示的表情和与其对应的标志?创建子类嘛~直接在子类中增加属性,保存标志不就行了。



所以,这个时候,插入表情的代码应该就是下面这样:


最后为了方便使用我做了一下简单的封装.把插入并显示图片,获取文字封装到UITextView的分类中.把设置NSTextAttachment的内容封装到NSTextAttachment的子类中

最后封装的代码是

把设置NSTextAttachment的内容封装到NSTextAttachment的子类中

图片如下


然后在UITextView的分类中这样调用就行了


写的不好.还往大神们多多指教.相互学习





1 0
原创粉丝点击