您的位置:首页 > 其它

禁用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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: