iOS 輸入框過濾掉所有表情

在server不支持昵稱保存昵稱的時候,我們就要對表情符號進行過濾掉,不僅僅需要過濾掉系統(tǒng)的表情,還有輸入法的表情,簡單來說就是所有的表情


// 是否包含表情符號

+ (BOOL)isContainsTwoEmoji:(NSString *)string

{

? ? __block BOOL isEomji = NO;

? ? [string enumerateSubstringsInRange:NSMakeRange(0, [string length]) options:NSStringEnumerationByComposedCharacterSequences usingBlock:

? ? ^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {

? ? ? ? const unichar hs = [substring characterAtIndex:0];

? ? ? ? //? ? ? ? NSLog(@"hs++++++++%04x",hs);

? ? ? ? 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)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? isEomji = YES;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? //? ? ? ? ? ? ? ? NSLog(@"uc++++++++%04x",uc);

? ? ? ? ? ? }

? ? ? ? } else if (substring.length > 1) {

? ? ? ? ? ? const unichar ls = [substring characterAtIndex:1];

? ? ? ? ? ? if (ls == 0x20e3|| ls ==0xfe0f) {

? ? ? ? ? ? ? ? isEomji = YES;

? ? ? ? ? ? }

? ? ? ? ? ? //? ? ? ? ? ? NSLog(@"ls++++++++%04x",ls);

? ? ? ? } else {

? ? ? ? ? ? if (0x2100 <= hs && hs <= 0x27ff && hs != 0x263b) {

? ? ? ? ? ? ? ? isEomji = YES;

? ? ? ? ? ? } else if (0x2B05 <= hs && hs <= 0x2b07) {

? ? ? ? ? ? ? ? isEomji = YES;

? ? ? ? ? ? } else if (0x2934 <= hs && hs <= 0x2935) {

? ? ? ? ? ? ? ? isEomji = YES;

? ? ? ? ? ? } else if (0x3297 <= hs && hs <= 0x3299) {

? ? ? ? ? ? ? ? isEomji = YES;

? ? ? ? ? ? } else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50|| hs == 0x231a ) {

? ? ? ? ? ? ? ? isEomji = YES;

? ? ? ? ? ? }

? ? ? ? }


? ? }];

? ? return isEomji;

}


在輸入框的代理方法做如下判斷

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

{

? ? //不支持系統(tǒng)表情的輸入

? ? if ([NSString isContainsTwoEmoji:string]) {

? ? ? ? return NO;

? ? }

? ? return YES;

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容