iOS禁止输入emoji表情

2022-05-19 17:23:41   文档大全网     [ 字体: ] [ 阅读: ]

#文档大全网# 导语】以下是®文档大全网的小编为您整理的《iOS禁止输入emoji表情》,欢迎阅读!
禁止,输入,表情,emoji,iOS
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: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.wddqxz.cn/69288cb8453610661ed9f4a4.html

相关推荐