代码参考:https://github.com/huxiheng/emojiKEYBoard
一,点击textview显示表情键盘,建立一个控制器 EmotionController单独实现表情键盘的逻辑(点击textview时,直接加载控制器的view)
二,在emotioncontroller 中加载ui界面
注意点:当为view加载约束时: o c的写法 [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[cView]-0-[tBar]-0-|" options:NSLayoutFormatAlignAllRight | NSLayoutFormatAlignAllLeft metrics:nil views:views]
swift的写法 var cons = NSLayoutConstraint.constraintsWithVisualFormat("H:|-0-[tBar]-0-|", options: [], metrics: nil, views: views)
cons += NSLayoutConstraint.constraintsWithVisualFormat("V:|-0-[cView]-0-[tBar]-0-|", options: [.AlignAllLeft, .AlignAllRight], metrics: nil, views: views)
三,准备键盘数据
数据准备的思想:(ps:emotionmanager类管理4类表情,emotionpackage类是管理具体类中的表情,e motion是代表具体的一个表情);
注意点:_packages = [[NSMutableArray alloc] init];需要写在初始化方法中;而在swift中,直接自定义属性var packages : [EmoticonPackage] = [EmoticonPackage]();
在oc中对表情键盘的处理:
四:插入最近的表情
点击的不是空白处和删除按钮时,需要把表情加入道最近分组中;若分组中含有点击的表情,则删除最近分组中位置的表情,并把表情置于首位,否则删除最后一个表情;
五,点击删除按钮,删除textview中的内容。
为textview扩展了方法:
六,点击转换实现富文,将字符转化成表情
FindEmoticon类实现对表情的转化