禁用emoji表情
2016-02-03 11:59
176 查看
#pragma mark - UITextView delegate
- (BOOL)textView:(UITextView
*)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString
*)text
{
if ([[[UITextInputMode
currentInputMode]primaryLanguage]
isEqualToString:@"emoji"])
{
[self
showHUDInWindowJustWithText:@"不能使用emoji表情"
disMissAfterDelay:1.0];
return
NO;
}
return
YES;
}
[UITextInputMode
currentInputMode]primaryLanguage]
被废弃了。可以使用[textField.textInputMode
primaryLanguage]这种写法。PS:后一种写法貌似不好使。
查看字符串中是否包含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;
}
- (BOOL)textView:(UITextView
*)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString
*)text
{
if ([[[UITextInputMode
currentInputMode]primaryLanguage]
isEqualToString:@"emoji"])
{
[self
showHUDInWindowJustWithText:@"不能使用emoji表情"
disMissAfterDelay:1.0];
return
NO;
}
return
YES;
}
[UITextInputMode
currentInputMode]primaryLanguage]
被废弃了。可以使用[textField.textInputMode
primaryLanguage]这种写法。PS:后一种写法貌似不好使。
查看字符串中是否包含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;
}
相关文章推荐
- github客户端切换账号
- 你看过夏洛克吗?
- 放声讴歌农村家庭承包制改革(上)
- EPM常用地址
- 分布式文件系统MogileFS
- Ping++ 第三方支付SDK 如果没安装支付宝客户端,不能弹出网页版支付宝的解决方案
- EPM常用新建系统用户语句
- mfc中怎样在一个基于对话框程序中添加菜单栏
- linux命令行翻页
- 【甘道夫】使用HIVE SQL实现推荐系统数据补全
- php global变量无效
- Kafka 初识
- 数论--多边形求重心及其面积
- 北京Uber优步司机奖励政策(2月3日)
- 问题No enclosing instance of type E is accessible的解决
- Leetcode题解(29)
- 简单理解遵循接口隔离原则的Java设计模式编程
- linux进程使用占比前十
- android取得所在位置的经纬度
- 科学家发现量子鸽子洞理论:或改变理解物理方式