IM模块-文本添加表情



转载地址: [简书地址](http://www.jianshu.com/users/23d0ae412e19/latest_articles)


ios系统中表情有对应的字符,只要转换就好了,系统就可以自动识别出来。


下面两个类是用来获取所有系统自定义的表情字符。


/*!
 @header emoji.h
 @abstract 提供对iOS内置表情编码处理
 @author EaseMob Inc.
 @version 1.00 2014/01/01 Creation (1.00)
 */

#import <Foundation/Foundation.h>

#define MAKE_Q(x) @#x
#define MAKE_EM(x,y) MAKE_Q(x##y)

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunicode"
#define MAKE_EMOJI(x) MAKE_EM(\U000,x)
#pragma clang diagnostic pop

#define EMOJI_METHOD(x,y) + (NSString *)x { return MAKE_EMOJI(y); }
#define EMOJI_HMETHOD(x) + (NSString *)x;
#define EMOJI_CODE_TO_SYMBOL(x) ((((0x808080F0 | (x & 0x3F000) >> 4) | (x & 0xFC0) << 10) | (x & 0x1C0000) << 18) | (x & 0x3F) << 24);

/*!
 @class
 @brief iOS内置表情编码处理类
 */
@interface Emoji : NSObject

/*!
 @method
 @brief unicode编码转换为iOS内置表情字符串
 @discussion
 @param code iOS内置表情对应的unicode编码值
 @result iOS内置表情字符串
 */
+ (NSString *)emojiWithCode:(int)code;

/*!
 @method
 @brief 获取所有iOS内置表情
 @discussion
 @result iOS表情字符串数组
 */
+ (NSArray *)allEmoji;
@end

//
//  Emoji.m
//  Emoji
//
//  Created by Aliksandr Andrashuk on 26.10.12.
//  Copyright (c) 2012 Aliksandr Andrashuk. All rights reserved.
//

#import "Emoji.h"
#import "EmojiEmoticons.h"


@implementation Emoji

// unicode编码转换为iOS内置表情字符串
+ (NSString *)emojiWithCode:(int)code {
    int sym = EMOJI_CODE_TO_SYMBOL(code);
    return [[NSString alloc] initWithBytes:&sym length:sizeof(sym) encoding:NSUTF8StringEncoding];
}


// 获取所有iOS内置表情

+ (NSArray *)allEmoji {
    NSMutableArray *array = [NSMutableArray new];
    [array addObjectsFromArray:[EmojiEmoticons allEmoticons]];
    return array;
}
@end

//
//  EmojiEmoticons.h
//  Emoji
//
//  Created by Aliksandr Andrashuk on 26.10.12.
//  Copyright (c) 2012 Aliksandr Andrashuk. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Emoji.h"

@interface EmojiEmoticons : NSObject

+ (NSArray *)allEmoticons;

EMOJI_HMETHOD(grinningFace);
EMOJI_HMETHOD(grinningFaceWithSmilingEyes);
EMOJI_HMETHOD(faceWithTearsOfJoy);
EMOJI_HMETHOD(smilingFaceWithOpenMouth);
EMOJI_HMETHOD(smilingFaceWithOpenMouthAndSmilingEyes);
EMOJI_HMETHOD(smilingFaceWithOpenMouthAndColdSweat);
EMOJI_HMETHOD(smilingFaceWithOpenMouthAndTightlyClosedEyes);
EMOJI_HMETHOD(smilingFaceWithHalo);
EMOJI_HMETHOD(smilingFaceWithHorns);
EMOJI_HMETHOD(winkingFace);
EMOJI_HMETHOD(smilingFaceWithSmilingEyes);
EMOJI_HMETHOD(faceSavouringDeliciousFood);
EMOJI_HMETHOD(relievedFace);
EMOJI_HMETHOD(smilingFaceWithHeartShapedEyes);
EMOJI_HMETHOD(smilingFaceWithSunglasses);
EMOJI_HMETHOD(smirkingFace);
EMOJI_HMETHOD(neutralFace);
EMOJI_HMETHOD(expressionlessFace);
EMOJI_HMETHOD(unamusedFace);
EMOJI_HMETHOD(faceWithColdSweat);
EMOJI_HMETHOD(pensiveFace);
EMOJI_HMETHOD(confusedFace);
EMOJI_HMETHOD(confoundedFace);
EMOJI_HMETHOD(kissingFace);
EMOJI_HMETHOD(faceThrowingAKiss);
EMOJI_HMETHOD(kissingFaceWithSmilingEyes);
EMOJI_HMETHOD(kissingFaceWithClosedEyes);
EMOJI_HMETHOD(faceWithStuckOutTongue);
EMOJI_HMETHOD(faceWithStuckOutTongueAndWinkingEye);
EMOJI_HMETHOD(faceWithStuckOutTongueAndTightlyClosedEyes);
EMOJI_HMETHOD(disappointedFace);
EMOJI_HMETHOD(worriedFace);
EMOJI_HMETHOD(angryFace);
EMOJI_HMETHOD(poutingFace);
EMOJI_HMETHOD(cryingFace);
EMOJI_HMETHOD(perseveringFace);
EMOJI_HMETHOD(faceWithLookOfTriumph);
EMOJI_HMETHOD(disappointedButRelievedFace);
EMOJI_HMETHOD(frowningFaceWithOpenMouth);
EMOJI_HMETHOD(anguishedFace);
EMOJI_HMETHOD(fearfulFace);
EMOJI_HMETHOD(wearyFace);
EMOJI_HMETHOD(sleepyFace);
EMOJI_HMETHOD(tiredFace);
EMOJI_HMETHOD(grimacingFace);
EMOJI_HMETHOD(loudlyCryingFace);
EMOJI_HMETHOD(faceWithOpenMouth);
EMOJI_HMETHOD(hushedFace);
EMOJI_HMETHOD(faceWithOpenMouthAndColdSweat);
EMOJI_HMETHOD(faceScreamingInFear);
EMOJI_HMETHOD(astonishedFace);
EMOJI_HMETHOD(flushedFace);
EMOJI_HMETHOD(sleepingFace);
EMOJI_HMETHOD(dizzyFace);
EMOJI_HMETHOD(faceWithoutMouth);
EMOJI_HMETHOD(faceWithMedicalMask);
EMOJI_HMETHOD(grinningCatFaceWithSmilingEyes);
EMOJI_HMETHOD(catFaceWithTearsOfJoy);
EMOJI_HMETHOD(smilingCatFaceWithOpenMouth);
EMOJI_HMETHOD(smilingCatFaceWithHeartShapedEyes);
EMOJI_HMETHOD(catFaceWithWrySmile);
EMOJI_HMETHOD(kissingCatFaceWithClosedEyes);
EMOJI_HMETHOD(poutingCatFace);
EMOJI_HMETHOD(cryingCatFace);
EMOJI_HMETHOD(wearyCatFace);
EMOJI_HMETHOD(faceWithNoGoodGesture);
EMOJI_HMETHOD(faceWithOkGesture);
EMOJI_HMETHOD(personBowingDeeply);
EMOJI_HMETHOD(seeNoEvilMonkey);
EMOJI_HMETHOD(hearNoEvilMonkey);
EMOJI_HMETHOD(speakNoEvilMonkey);
EMOJI_HMETHOD(happyPersonRaisingOneHand);
EMOJI_HMETHOD(personRaisingBothHandsInCelebration);
EMOJI_HMETHOD(personFrowning);
EMOJI_HMETHOD(personWithPoutingFace);
EMOJI_HMETHOD(personWithFoldedHands);
@end

//
//  EmojiEmoticons.m
//  Emoji
//
//  Created by Aliksandr Andrashuk on 26.10.12.
//  Copyright (c) 2012 Aliksandr Andrashuk. All rights reserved.
//

#import "EmojiEmoticons.h"

@implementation EmojiEmoticons

+ (NSArray *)allEmoticons {
    NSMutableArray *array = [NSMutableArray new];
    NSMutableArray * localAry = [[NSMutableArray alloc] initWithObjects:
                                 [Emoji emojiWithCode:0x1F60a],
                                 [Emoji emojiWithCode:0x1F603],
                                 [Emoji emojiWithCode:0x1F609],
                                 [Emoji emojiWithCode:0x1F62e],
                                 [Emoji emojiWithCode:0x1F60b],
                                 [Emoji emojiWithCode:0x1F60e],
                                 [Emoji emojiWithCode:0x1F621],
                                 [Emoji emojiWithCode:0x1F616],
                                 [Emoji emojiWithCode:0x1F633],
                                 [Emoji emojiWithCode:0x1F61e],
                                 [Emoji emojiWithCode:0x1F62d],
                                 [Emoji emojiWithCode:0x1F610],
                                 [Emoji emojiWithCode:0x1F607],
                                 [Emoji emojiWithCode:0x1F62c],
                                 [Emoji emojiWithCode:0x1F606],
                                 [Emoji emojiWithCode:0x1F631],
                                 [Emoji emojiWithCode:0x1F385],
                                 [Emoji emojiWithCode:0x1F634],
                                 [Emoji emojiWithCode:0x1F615],
                                 [Emoji emojiWithCode:0x1F637],
                                 [Emoji emojiWithCode:0x1F62f],
                                 [Emoji emojiWithCode:0x1F60f],
                                 [Emoji emojiWithCode:0x1F611],
                                 [Emoji emojiWithCode:0x1F496],
                                 [Emoji emojiWithCode:0x1F494],
                                 [Emoji emojiWithCode:0x1F319],
                                 [Emoji emojiWithCode:0x1f31f],
                                 [Emoji emojiWithCode:0x1f31e],
                                 [Emoji emojiWithCode:0x1F308],
                                 [Emoji emojiWithCode:0x1F60d],
                                 [Emoji emojiWithCode:0x1F61a],
                                 [Emoji emojiWithCode:0x1F48b],
                                 [Emoji emojiWithCode:0x1F339],
                                 [Emoji emojiWithCode:0x1F342],
                                 [Emoji emojiWithCode:0x1F44d],
                                 
                                 [Emoji emojiWithCode:0x1F602],
                                  [Emoji emojiWithCode:0x1F603],
                                  [Emoji emojiWithCode:0x1F604],
                                  [Emoji emojiWithCode:0x1F609],
                                  [Emoji emojiWithCode:0x1F613],
                                  [Emoji emojiWithCode:0x1F614],
                                  [Emoji emojiWithCode:0x1F616],
                                  [Emoji emojiWithCode:0x1F618],
                                  [Emoji emojiWithCode:0x1F61a],
                                  [Emoji emojiWithCode:0x1F61c],
                                  [Emoji emojiWithCode:0x1F61d],
                                  [Emoji emojiWithCode:0x1F61e],
                                  [Emoji emojiWithCode:0x1F620],
                                  [Emoji emojiWithCode:0x1F621],
                                  [Emoji emojiWithCode:0x1F622],
                                  [Emoji emojiWithCode:0x1F623],
                                  [Emoji emojiWithCode:0x1F628],
                                  [Emoji emojiWithCode:0x1F62a],
                                  [Emoji emojiWithCode:0x1F62d],
                                  [Emoji emojiWithCode:0x1F630],
                                  [Emoji emojiWithCode:0x1F631],
                                  [Emoji emojiWithCode:0x1F632],
                                  [Emoji emojiWithCode:0x1F633],
                                  [Emoji emojiWithCode:0x1F645],
                                  [Emoji emojiWithCode:0x1F646],
                                  [Emoji emojiWithCode:0x1F647],
                                  [Emoji emojiWithCode:0x1F64c],
                                  [Emoji emojiWithCode:0x1F6a5],
                                  [Emoji emojiWithCode:0x1F6a7],
                                  [Emoji emojiWithCode:0x1F6b2],
                                  [Emoji emojiWithCode:0x1F6b6],
                                  [Emoji emojiWithCode:0x1F302],
                                  [Emoji emojiWithCode:0x1F319],
                                  [Emoji emojiWithCode:0x1F31f],
                                 nil];
    [array addObjectsFromArray:localAry];
    //    for (int i=0x1F600; i<=0x1F64F; i++) {
    //        if (i < 0x1F641 || i > 0x1F644) {
    //            [array addObject:[Emoji emojiWithCode:i]];
    //        }
    //    }
    
    
    NSLog(@"IOS 内置表情--->%@",array);
    
    
    return array;
}

EMOJI_METHOD(grinningFace,1F600);
EMOJI_METHOD(grinningFaceWithSmilingEyes,1F601);
EMOJI_METHOD(faceWithTearsOfJoy,1F602);
EMOJI_METHOD(smilingFaceWithOpenMouth,1F603);
EMOJI_METHOD(smilingFaceWithOpenMouthAndSmilingEyes,1F604);
EMOJI_METHOD(smilingFaceWithOpenMouthAndColdSweat,1F605);
EMOJI_METHOD(smilingFaceWithOpenMouthAndTightlyClosedEyes,1F606);
EMOJI_METHOD(smilingFaceWithHalo,1F607);
EMOJI_METHOD(smilingFaceWithHorns,1F608);
EMOJI_METHOD(winkingFace,1F609);
EMOJI_METHOD(smilingFaceWithSmilingEyes,1F60A);
EMOJI_METHOD(faceSavouringDeliciousFood,1F60B);
EMOJI_METHOD(relievedFace,1F60C);
EMOJI_METHOD(smilingFaceWithHeartShapedEyes,1F60D);
EMOJI_METHOD(smilingFaceWithSunglasses,1F60E);
EMOJI_METHOD(smirkingFace,1F60F);
EMOJI_METHOD(neutralFace,1F610);
EMOJI_METHOD(expressionlessFace,1F611);
EMOJI_METHOD(unamusedFace,1F612);
EMOJI_METHOD(faceWithColdSweat,1F613);
EMOJI_METHOD(pensiveFace,1F614);
EMOJI_METHOD(confusedFace,1F615);
EMOJI_METHOD(confoundedFace,1F616);
EMOJI_METHOD(kissingFace,1F617);
EMOJI_METHOD(faceThrowingAKiss,1F618);
EMOJI_METHOD(kissingFaceWithSmilingEyes,1F619);
EMOJI_METHOD(kissingFaceWithClosedEyes,1F61A);
EMOJI_METHOD(faceWithStuckOutTongue,1F61B);
EMOJI_METHOD(faceWithStuckOutTongueAndWinkingEye,1F61C);
EMOJI_METHOD(faceWithStuckOutTongueAndTightlyClosedEyes,1F61D);
EMOJI_METHOD(disappointedFace,1F61E);
EMOJI_METHOD(worriedFace,1F61F);
EMOJI_METHOD(angryFace,1F620);
EMOJI_METHOD(poutingFace,1F621);
EMOJI_METHOD(cryingFace,1F622);
EMOJI_METHOD(perseveringFace,1F623);
EMOJI_METHOD(faceWithLookOfTriumph,1F624);
EMOJI_METHOD(disappointedButRelievedFace,1F625);
EMOJI_METHOD(frowningFaceWithOpenMouth,1F626);
EMOJI_METHOD(anguishedFace,1F627);
EMOJI_METHOD(fearfulFace,1F628);
EMOJI_METHOD(wearyFace,1F629);
EMOJI_METHOD(sleepyFace,1F62A);
EMOJI_METHOD(tiredFace,1F62B);
EMOJI_METHOD(grimacingFace,1F62C);
EMOJI_METHOD(loudlyCryingFace,1F62D);
EMOJI_METHOD(faceWithOpenMouth,1F62E);
EMOJI_METHOD(hushedFace,1F62F);
EMOJI_METHOD(faceWithOpenMouthAndColdSweat,1F630);
EMOJI_METHOD(faceScreamingInFear,1F631);
EMOJI_METHOD(astonishedFace,1F632);
EMOJI_METHOD(flushedFace,1F633);
EMOJI_METHOD(sleepingFace,1F634);
EMOJI_METHOD(dizzyFace,1F635);
EMOJI_METHOD(faceWithoutMouth,1F636);
EMOJI_METHOD(faceWithMedicalMask,1F637);
EMOJI_METHOD(grinningCatFaceWithSmilingEyes,1F638);
EMOJI_METHOD(catFaceWithTearsOfJoy,1F639);
EMOJI_METHOD(smilingCatFaceWithOpenMouth,1F63A);
EMOJI_METHOD(smilingCatFaceWithHeartShapedEyes,1F63B);
EMOJI_METHOD(catFaceWithWrySmile,1F63C);
EMOJI_METHOD(kissingCatFaceWithClosedEyes,1F63D);
EMOJI_METHOD(poutingCatFace,1F63E);
EMOJI_METHOD(cryingCatFace,1F63F);
EMOJI_METHOD(wearyCatFace,1F640);
EMOJI_METHOD(faceWithNoGoodGesture,1F645);
EMOJI_METHOD(faceWithOkGesture,1F646);
EMOJI_METHOD(personBowingDeeply,1F647);
EMOJI_METHOD(seeNoEvilMonkey,1F648);
EMOJI_METHOD(hearNoEvilMonkey,1F649);
EMOJI_METHOD(speakNoEvilMonkey,1F64A);
EMOJI_METHOD(happyPersonRaisingOneHand,1F64B);
EMOJI_METHOD(personRaisingBothHandsInCelebration,1F64C);
EMOJI_METHOD(personFrowning,1F64D);
EMOJI_METHOD(personWithPoutingFace,1F64E);
EMOJI_METHOD(personWithFoldedHands,1F64F);
@end

使用如下:



#import "ViewController.h"
#import "EmojiEmoticons.h"

@interface ViewController ()


@property (weak, nonatomic) IBOutlet UITextView *faceTextField;



@property (nonatomic,strong) NSArray *array;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
   
    _array =  [EmojiEmoticons allEmoticons];
}


- (IBAction)faceBtnAction:(id)sender {
    
    int index = arc4random_uniform(20);
    NSLog(@"系统表情符号--->%@",[_array objectAtIndex:index]);
    
    _faceTextField.text = [_faceTextField.text stringByAppendingString:[_array objectAtIndex:index]];
}


@end

如此直接可以看到效果。  如下:




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值