iOS中判断Emoji表情问题

 更新时间:2016年06月27日 10:06:25   作者:欧阳剑心  
在项目中遇到ios判断emoji表情的问题,下面小编把我的解决方案分享到脚本之家平台供大家参考

先给大家说下问题描述

服务器端不支持Emoji表情,因此客户端在上传用户输入时,不能包含Emoji表情。

解决方案

在客户端发送请求前,判断用户输入中是否含有表情,如果含有表情,则提示用户重新输入。这个过程关键是如何判断字符串中是否含有Emoji表情。要判断是否含有Emoji表情,必须先了解什么是Emoji。

Emoji 是一套起源于日本的12x12像素表情符号,由栗田穣崇(Shigetaka Kurit)创作,最早在日本网络及手机用户中流行,自苹果公司发布的iOS 5输入法中加入了emoji后,这种表情符号开始席卷全球,目前emoji已被大多数现代计算机系统所兼容的Unicode编码采纳,普遍应用于各种手机短信和社交网络中。

以上是摘自百度百科里的一段话,Emoji表情最终会被编码成Unicode,因此,只要知道Emoji表情的Unicode编码的范围,就可以判断用户是否输入了Emoji表情。以下是具体代码,我这里写成了NSString的一个分类

@implementation NSString (Emoji)
+ (BOOL)stringContainsEmoji:(NSString *)string
{
__block BOOL returnValue = NO;
[string enumerateSubstringsInRange:NSMakeRange(0, [string length]) 
options:NSStringEnumerationByComposedCharacterSequences 
usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
const unichar hs = [substring characterAtIndex:0];
if (0xd800 <= hs && hs <= 0xdbff) {
if (substring.length > 1) {
const unichar ls = [substring characterAtIndex:1];
const int uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000;
if (0x1d000 <= uc && uc <= 0x1f77f) {
returnValue = YES;
}
}
} else if (substring.length > 1) {
const unichar ls = [substring characterAtIndex:1];
if (ls == 0x20e3) {
returnValue = YES;
}
} else {
if (0x2100 <= hs && hs <= 0x27ff) {
returnValue = YES;
} else if (0x2B05 <= hs && hs <= 0x2b07) {
returnValue = YES;
} else if (0x2934 <= hs && hs <= 0x2935) {
returnValue = YES;
} else if (0x3297 <= hs && hs <= 0x3299) {
returnValue = YES;
} else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50) {
returnValue = YES;
}
}
}];
return returnValue;
}

本段代码亲测管用,欢迎大家参考。

以上所述是小编给大家介绍的iOS中判断Emoji表情问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • iOS9提示框的正确使用方式

    iOS9提示框的正确使用方式

    这篇文章主要为大家详细介绍了iOS9提示框的正确使用方式,iOS8升级到iOS9的过程,弹出提示框的方式有了很大的改变,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • IOS图片无限轮播器的实现原理

    IOS图片无限轮播器的实现原理

    这篇文章主要介绍了IOS图片无限轮播器的实现原理的相关资料,需要的朋友可以参考下
    2016-03-03
  • IOS内存泄漏检查方法及重写MLeakFinder

    IOS内存泄漏检查方法及重写MLeakFinder

    这篇文章主要介绍了IOS内存泄漏检查方法及如何重写MLeakFinder,帮助ios开发者维护自身程序,感兴趣的朋友可以了解下
    2021-04-04
  • iOS动画案例(1) 类似于qq账号信息里的一个动画效果

    iOS动画案例(1) 类似于qq账号信息里的一个动画效果

    做一个类似于qq账号信息里的一个动画,感觉挺有意思,下面给大家分享iOS动画案例(1) 类似于qq账号信息里的一个动画效果,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-01-01
  • iOS 标签Tag列表的实现代码

    iOS 标签Tag列表的实现代码

    这篇文章主要介绍了本篇文章主要介绍了iOS 标签Tag列表的实现代码,非常具有实用价值,需要的朋友可以参考下
    2017-04-04
  • iOS自带原生二维码扫描的实现

    iOS自带原生二维码扫描的实现

    最近项目中需要做一个二维码扫描,虽然有很多二维码扫描的第三方可以用,但是考虑到项目中的需要,所以我放弃了使用三方库,而采用了苹果原生的扫描。下面这篇文章就介绍了iOS自带原生二维码扫描的实现,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-01-01
  • iOS10适配问题收集整理

    iOS10适配问题收集整理

    本文是小编给大家收集整理些有关iOS10适配问题的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • iOS button响应流程图文详解

    iOS button响应流程图文详解

    这篇文章主要为大家介绍了iOS button响应流程图文详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • iOS开发之清除缓存功能的实现

    iOS开发之清除缓存功能的实现

    现在的绝大多数应用中都存在着清楚缓存的功能,形形色色,各有千秋,所以小编现为大家介绍一种最基础的清除缓存的方法,有需要的可以参考借鉴。下面来一起看看吧。
    2016-09-09
  • iOS如何自定义步骤进度条实例详解

    iOS如何自定义步骤进度条实例详解

    这篇文章主要给大家介绍了关于iOS如何自定义步骤进度条的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11

最新评论