Ios5 iOS 5.0检查NSString是否包含表情符号

Ios5 iOS 5.0检查NSString是否包含表情符号,ios5,nsstring,emoji,Ios5,Nsstring,Emoji,我有一个iOS5应用程序,允许用户用国际键盘输入用户名。 我想检查输入(NSString*)是否包含表情符号 禁用表情键盘不是一个选项(使用UIKeyboardTypesCapable,因为它禁用了一些国际键盘) 我试过了。但它并没有检测到像这样的角色 有没有解决这个问题的好方法?我能够使用以下方法检测iOS 5和iOS 6表情键盘中的所有表情 NSData *data = [yourstringofemo dataUsingEncoding:NSNonLossyASCIIStringEncod

我有一个iOS5应用程序,允许用户用国际键盘输入用户名。 我想检查输入(NSString*)是否包含表情符号

禁用表情键盘不是一个选项(使用UIKeyboardTypesCapable,因为它禁用了一些国际键盘)

我试过了。但它并没有检测到像这样的角色


有没有解决这个问题的好方法?

我能够使用以下方法检测iOS 5和iOS 6表情键盘中的所有表情
NSData *data = [yourstringofemo dataUsingEncoding:NSNonLossyASCIIStringEncoding];

NSString *goodValue = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];


if ([goodValue rangeOfString:@"\u"].location == NSNotFound) 
{
      goodvalue string contains emoji characters
} 
else
{
      goodvalue string does not contain emoji characters
}
使用类别,但请注意
iOS 9.1添加了更多上述方法无法识别的表情符号(尤其是这些符号:对于iOS 10及以下版本,您应该检查unicode是否介于以下值之间

if ((0x1d000 <= uc && uc <= 0x1f77f) || (0x1f900 <= 0x1f9ff)) {
     //is emoji
}

if((0x1d000)这会过滤掉像“ı”这样的非表情符号。这是不正确的。此解决方案不适用于苹果公司解释为表情符号的unicode字符,但实际上在表情符号被创建和索引为unicode之前就已经存在了。例如,表情符号键盘上的第5个表情符号(在苹果将其改为表情符号之前,unicode一直存在)-->☺ 这仍然允许使用某些字符,例如☺️, 添加以下内容:(0x2100)