5

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

禁用表情符号键盘不是一个选项(使用 UIKeyboardTypeASCIICapable 因为它禁用了一些国际键盘)。

我试过 这个。但它并没有检测到一些像这样的字符。

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

4

4 回答 4

10

我能够使用以下方法检测 iOS 5 和 iOS 6 表情符号键盘中的所有表情符号 https://gist.github.com/4146056

于 2012-11-26T00:56:09.193 回答
1

使用https://github.com/woxtu/NSString-RemoveEmoji类别,但请注意 iOS 9.1 添加了更多上述方法无法识别的表情符号(尤其是这些:)。

FIX:
return (0x1d000 <= codepoint && codepoint <= 0x1f77f);isEmoji方法中替换为
return (0x1d000 <= codepoint && codepoint <= 0x1f77f) || (0x1F900 <= codepoint && codepoint <=0x1f9ff);

于 2015-11-04T18:10:40.047 回答
0

对于 iOS 10 及更低版本,您应该检查 unicode 是否在以下值之间。

if ((0x1d000 <= uc && uc <= 0x1f77f) || (0x1f900 <= 0x1f9ff)) {
     //is emoji
}
于 2017-06-08T10:08:43.877 回答
-1
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
}
于 2012-10-31T09:47:56.083 回答