iOS 过滤输入Emoji表情的问题
2016-08-08 19:53
465 查看
服务器端不支持Emoji表情,因此客户端在上传用户输入时,不能包含Emoji表情。
在客户端发送请求前,判断用户输入中是否含有表情,如果含有表情,则提示用户重新输入。这个过程关键是如何判断字符串中是否含有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;
}
在客户端发送请求前,判断用户输入中是否含有表情,如果含有表情,则提示用户重新输入。这个过程关键是如何判断字符串中是否含有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中textField、textView判断过滤禁用emoji表情》,解决过滤表情后九宫格输入不了问题
- iOS开发问题----去掉输入键盘上的自动联想部分,限制长度内容,以及禁止输入emoji表情等问题
- 关于ArcGIS Runtime SDK for iOS中AGSLayerDefinition使用日期类型字段过滤的问题
- IOS 6.0 下 在输入中文时 按下锁屏键 导致的闪退问题
- ios UITextView bug 输入文字跳动bug问题 (・ˍ・*)
- 关于移动端input框 在微信中 和ios中无法输入文字的问题
- iOS 过滤emoji表情
- iOS应用中增加emoji表情输入功能
- [iOS备忘录]UITextView多行输入,键盘隐藏问题[swift]
- 解决在iOS开发的代码中实现scp的ssh远程连接,怎么输入密码问题
- IOS开发问题解决之限制UITextField输入特定位数小数时,Done按钮失效
- iOS输入框禁止输入emoji表情
- iOs 6 上弹出框关闭时利马启动新的弹出框后导致无法输入文字的问题
- iOS禁止输入emoji表情
- Java解决在浏览器地址栏中输入url访问action的问题以及拦截方法过滤的简易实现
- ios 6.x系统UITextView 设置为密码输入无效的问题
- iOS 6.0 下 在输入中文时 按下锁屏键 导致的闪退问题
- IOS 6.0 下 在输入中文时 按下锁屏键 导致的闪退问题
- air ios 输入遮挡问题
- ios 判断禁止输入emoji表情