获取系统的emoji表情定制键盘

Posted Hakim_Fan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取系统的emoji表情定制键盘相关的知识,希望对你有一定的参考价值。

首先 ,想要获取系统的表情,要首先知道表情对应的UTF8 的编码方式,我将其中一部分的图片展示出来 ,然后用UIButton 排列,ios 7后又增加了300多个表情符号,这些都可以百度查到,现在上代码:

//将数字转为

#define EMOJI_CODE_TO_SYMBOL(x) ((((0x808080F0 | (x & 0x3F000) >> 4) | (x & 0xFC0) << 10) | (x & 0x1C0000) << 18) | (x & 0x3F) << 24);

定义的宏将转成UTF8,取出对应的表情符号:

//获取默认表情数组

- (NSArray *)defaultEmoticons {

    NSMutableArray *array = [NSMutableArray new];

    for (int i=0x1F600; i<=0x1F64F; i++) {

        if (i < 0x1F641 || i > 0x1F644) {

            int sym = EMOJI_CODE_TO_SYMBOL(i);

            NSString *emoT = [[NSString alloc] initWithBytes:&sym length:sizeof(sym)encoding:NSUTF8StringEncoding];

            [array addObject:emoT];

        }

    }

    return array;

}

在将对应数组里的表情依次存放到UIButton里,贴出部分代码:

 

    //获取数组

    NSArray *arrEmotion = [self defaultEmoticons];

    //将表情放到UIButton里

    CGFloat W = 30;

    CGFloat H = 30;

    CGFloat X;

    CGFloat Y;

    for (int i = 0; i count; i ++) {

        X = 10 +(W+5) * (i%10);

        Y = 260 + (i/10)* (H +5);

        UIButton *biaoqing =[[UIButton alloc] init];

        biaoqing.backgroundColor = [UIColor redColor];

        biaoqing.frame = CGRectMake(X, Y, W, H);

        [self.view addSubview:biaoqing];

        NSString *Str = arrEmotion[i];

        [biaoqing setTitle:Str forState:UIControlStateNormal];

        biaoqing.tag = i;

        [biaoqing addTarget:self action:@selector(biaoqingClick:)forControlEvents:UIControlEventTouchUpInside];

    }

 

这样就完成了 在你自定义键盘里的表情添加 ,同时设置该点击事件将表情符号添加进textField或者Label里:

- (void) biaoqingClick:(UIButton *)biaoqing{

    NSArray *emoji = [self defaultEmoticons];

    NSString *str = emoji[biaoqing.tag];

    self.textField.text = str;

}

基本功能完成 ,效果图展示:
 
技术分享
在后台服务器处理表情方面 ,mysql 5.4之后 就可以自动识别 uicode 的表情编码,并且经验证iOS端的表情符号在安卓上也可以识别,如果mysql的版本过低,报错无法识别uicode编码 ,可以参见服务端对emoji支持的博客:http://segmentfault.com/a/1190000000616820
未完 ,待续  后续贴出做出类似 自定义表情的展示方式 。

以上是关于获取系统的emoji表情定制键盘的主要内容,如果未能解决你的问题,请参考以下文章

qq表情emoji怎么打出来?

安卓emoji键盘怎么添加

安卓手机QQ输入法怎么添加emoji表情!

每个emoji表情都是什么意思,想要全部表情的名称

苹果emoji表情怎么升级

安卓手机QQ输入法怎么添加emoji表情!