ios禁止输入emoji表情

2022-05-19 17:23:44   第一文档网     [ 字体: ] [ 阅读: ] [ 文档下载 ]
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。下载word有问题请添加QQ:admin处理,感谢您的支持与谅解。点击这里给我发消息

#第一文档网# 导语】以下是®第一文档网的小编为您整理的《ios禁止输入emoji表情》,欢迎阅读!
禁止,输入,表情,emoji,ios

因为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:NSStringEnumerationByComposedCharacterSequencesusingBlock:

^(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; }

这样在textviewtextfielddelegate判断一下,即可禁止输入emoji,如下: - (BOOL)textField:(UITextField *)textField

shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

//emoji无效

if([NSString isContainsEmoji:string]) {

return NO; }


}

当然,最好的方法还是做一套emoji的编码解码,以支持其他非ios设备。不然禁止这个功能有点说不过去




本文来源:https://www.dywdw.cn/05bded1e84868762cbaed55e.html

相关推荐
推荐阅读