美文网首页
如何让键盘禁止输入Emoji 表情,以及九宫格键盘的坑

如何让键盘禁止输入Emoji 表情,以及九宫格键盘的坑

作者: JohnXych | 来源:发表于2018-12-10 10:47 被阅读12次

    在开发中我们有时候会遇到一些需求 ,比如就是我们接下来要谈的内容 就是输入框内禁止输入Emoji表情,那么我可以用如下方法来实现,

    // 是否包含emoji

    -(BOOL)stringContainsEmoji:(NSString*)string

    {

        __blockBOOLreturnValue =NO;

        [stringenumerateSubstringsInRange:NSMakeRange(0, [string length])

                                   options:NSStringEnumerationByComposedCharacterSequences

                                usingBlock:^(NSString*substring,NSRangesubstringRange,NSRangeenclosingRange,BOOL*stop) {

                                    constunicharhigh = [substringcharacterAtIndex:0];

                                    // Surrogate pair (U+1D000-1F9FF)

                                    if(0xD800<= high && high <=0xDBFF) {

                                        constunicharlow = [substringcharacterAtIndex:1];

                                        constintcodepoint = ((high -0xD800) *0x400) + (low -0xDC00) +0x10000;

                                        if(0x1D000<= codepoint && codepoint <=0x1F9FF){

                                            returnValue =YES;

                                        }

                                        // Not surrogate pair (U+2100-27BF)

                                    }else{

                                        if(0x2100<= high && high <=0x27BF){

                                            returnValue =YES;

                                        }

                                    }

                                }];

        returnreturnValue;

    }


    然后测试完全过滤掉了我们平常通用的Emoji表情,但是你会发现一个问题,当你的键盘切换到中文的九宫格的时候,键盘会卡主 无法输入 无法选择要输入的字,当你debug的时候 你会发现 点击的九宫格变成了➋➌ … ➒中模样,这显然也是emoji表情呀,所以我们还需要顾虑这些特殊字符

    在代码中加上这句判断,就可以完美解决问题了!

    关于判断一字符串是否包含 Emoji 表情的方法,一般是通过 Unicode 编码范围来判断 ,详见这里:判别Emoji表情

    方法名是这个:- (BOOL)stringContainsEmoji:(NSString *)string;

    相关文章

      网友评论

          本文标题:如何让键盘禁止输入Emoji 表情,以及九宫格键盘的坑

          本文链接:https://www.haomeiwen.com/subject/jhxrhqtx.html