iOS禁止输入emoji表情.docxVIP

  • 7
  • 0
  • 约1.67千字
  • 约 3页
  • 2021-11-14 发布于江苏
  • 举报
iOS 禁止输入 emoji 表情 因为 emoji 编码在 android 或者 pc 设备没有很好的支持,所以有时候为了禁止 emoji 表情的输入,因为关闭不了系统 emoji 的键盘,那只能根据编码把 emoji 表情过滤掉,写了一个NSString 的拓展,用来判断是不是 emoji 编码: @implementation NSString(Emoji) +(BOOL)isContainsEmoji:(NSString *)string { block BOOL isEomji = NO; [string enumerateSubstringsInRange:NSMakeRange(0, [string length]) options:NSStringEnumerationByComposedCharacterSequencesusi ngBlock: ^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) { const unichar hs = [substring characterAtIndex:0]; // surrogate pair 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; } } } else if (substring.length 1) { const unichar ls = [substring characterAtIndex:1]; if (ls == 0x20e3) { isEomji = YES; } } else { // non surrogate 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; } 这样在 textview 或 textfield的 delegate 判断一下,即可禁止输入 emoji ,如下: - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { //emoji 无效 if([NSString isContainsEmoji:string]) { return NO; } } 当然,最好的方法还是做一套 emoji 的编码解码,以支持其他非 ios 设备。不然禁止这个功能有点说不过去。

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档