因为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;

}

这样在textview或textfield的delegate判断一下,即可禁止输入emoji,如下:

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

{

//emoji无效

if([NSString isContainsEmoji:string])

{

return NO;

}

}

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

转载于:https://www.cnblogs.com/vicstudio/archive/2013/05/30/3109335.html

iOS禁止输入emoji表情相关推荐

  1. iOS中Emoji表情的判断

    问题 服务器端不支持Emoji表情,因此客户端在上传用户输入时,不能包含Emoji表情. 解决方案 在客户端发送请求前,判断用户输入中是否含有表情,如果含有表情,则提示用户重新输入.这个过程关键是如何 ...

  2. Android IOS风格Emoji表情,简单实用

    相信大家做项目的时候,特别是聊天相关的,一般都需要用到Emoji. 但是Emoji表情在安卓和IOS两个平台上,显示效果是不一样的,如下图: 言归正传,大家都知道,Emoji就是一组Unicode编码 ...

  3. android显示ios emoji表情符号,教程:在 Android 上也能用 iOS 新 Emoji 表情

    那是一个阳光明媚的周末,我惬意的躺在床上用着我的 Android 机刷微博,看着网上那些段子手,心情无比的舒畅.直到我看见这么一条: 瞬间百万头羊驼从我心头奔过,他到底发了些什么!?为什么我看不见!! ...

  4. iOS 过滤emoji表情

    iOS输入框过滤emoji表情 // // ViewController.m // test // // Created by 郭宇 on 13-11-15. // Copyright (c) 201 ...

  5. iOS的emoji表情在数据库不支持UTF-8格式的处理

    前言 最近遇到苹果手机自带的emoji表情的处理问题,由于我们的数据库编码是GBK编码,而苹果的键盘自带的emoji表情,苹果系统的编码格式是UTF8编码,所以在把emoji表情存到GBK编码的数据库 ...

  6. android edittext 输入法表情,Android开发中EditText禁止输入Emoji表情符

    在开发中可能多处会用到过滤Emoji表情符,一般情况下,我们会通过EditText的addTextChangedListener()监听来过滤Emoji表情,但在实际开发中会遇到多个EditText, ...

  7. 禁止输入emoji表情

    三个文本框textField UITextView都要禁止苹果自带emoji 后来发现是原来写的方法不能覆盖所有的表情,新增的表情过滤不掉,只好再加了一个方法 http://www.jianshu.c ...

  8. iOS开发 ☞ emoji表情大全

    表情链接 http://apps.timwhitlock.info/emoji/tables/unicode#block-4-enclosed-characters http://emojipedia ...

  9. 输入框禁止输入emoji表情

    jq中使用 $(function () {if(navigator.userAgent.indexOf('Android') > -1 || navigator.userAgent.indexO ...

最新文章

  1. 又现神论文!《本人娶刘亦菲的可行性报告》省级期刊收录
  2. CSS基础篇--css reset重置样式有那么重要吗?
  3. 利用Traefik+Docker构建可弹性扩展的微服务或服务集群
  4. Jsoup根据URL加载一个Document
  5. 市场活动课件:SQL Server 索引优化
  6. 霍强:创新研究到底应该怎么做?
  7. 剑指offer(C++)-JZ8:二叉树的下一个结点(数据结构-树)
  8. WebGIS中利用AGS JS+eCharts实现一些数据展示的探索
  9. 使用Movavi Photo Editor如何向视频中添加转场
  10. 中国象棋游戏设计与实现
  11. X509TrustManager信任SSL证书
  12. 桌面创建快捷方式 不显示图标
  13. Vscode 文件中 查找替换 局部查找 替换快捷键
  14. pytorch绘制loss和accuracy曲线
  15. Ubuntu下邮件服务器的配置——SendMail
  16. android用户和AID
  17. 东南亚电商龙头 shopee 社招,校招 内推(长期有效)
  18. android 字体加粗
  19. 考试末名的英国教授获诺贝尔奖
  20. 从优步僵尸车事件看源码保护的必要性

热门文章

  1. hadoop jar
  2. C语言switch如何退出,C语言萌新,想问问如何让下面那个switch函数输出的结果继续...
  3. oracle使用连接池,使用Oracle的数据连接池
  4. 网工年薪100w+,你在哪个阶段?
  5. 云计算架构师分享:容器云在金融企业的落地方案 | 周末送资料(原题:某保险公司容器云PaaS平台建设实践经验分享)
  6. 算法学习总结(3)——二叉树数据结构重点知识总结
  7. Mysql学习总结(53)——使用MySql开发的Java开发者规范
  8. Mysql学习总结(42)——MySql常用脚本大全
  9. JavaScript学习总结(5)——Javascript面向(基于)对象编程
  10. Maven学习总结(4)——Maven核心概念