禁用emoji表情

#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;
}

你可能感兴趣的:(禁用emoji表情)