我得到一个字符串的文本大小
textSize = [[tempDict valueForKeyPath:@"caption.text"] sizeWithFont:[UIFont systemFontOfSize:12] constrainedToSize:CGSizeMake(280,CGFLOAT_MAX) lineBreakMode: NSLineBreakByWordWrapping];

我唯一的问题是,如果字符串只包含一个表情符号,我的应用程序崩溃.有没有一个简单的方法来检查emojis,或者我必须创建一个所有可能的emojis的数组,然后使用它来检查它们?

错误:

-[NSNull sizeWithFont:constrainedToSize:lineBreakMode:]: unrecognized selector sent to instance 0x3aa88a60


if ([tempDict valueForKeyPath:@"caption.text"]){
            NSLog(@"%@",[tempDict valueForKeyPath:@"caption"]);
            //Measure the message label Box height
            textSize = [[tempDict valueForKeyPath:@"caption.text"] sizeWithFont:[UIFont systemFontOfSize:12] constrainedToSize:CGSizeMake(280,CGFLOAT_MAX) lineBreakMode: NSLineBreakByWordWrapping];
            int height = 320 + 20 + textSize.height;
            [cellHeight addobject:[NSNumber numberWithInt:height]];
}

解决方法

尝试这个代码:
- (BOOL)stringContainsEmoji:(Nsstring *)string {
    __block BOOL returnValue = NO;
    [string enumerateSubstringsInRange:NSMakeRange(0,[string length]) options:NsstringEnumerationByComposedCharacterSequences usingBlock:
     ^(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) {
                     returnValue = YES;
                 }
             }
         } else if (substring.length > 1) {
             const unichar ls = [substring characteratIndex:1];
             if (ls == 0x20e3) {
                 returnValue = YES;
             }

         } else {
             // non surrogate
             if (0x2100 <= hs && hs <= 0x27ff) {
                 returnValue = YES;
             } else if (0x2B05 <= hs && hs <= 0x2b07) {
                 returnValue = YES;
             } else if (0x2934 <= hs && hs <= 0x2935) {
                 returnValue = YES;
             } else if (0x3297 <= hs && hs <= 0x3299) {
                 returnValue = YES;
             } else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50) {
                 returnValue = YES;
             }
         }
     }];

    return returnValue;
}

ios – 检查字符串中是否包含表情符号的更多相关文章

  1. ios – 在Xcode中的分段控件中选择的文本状态

    我正在使用Swift和Xcode开发我的第一个应用程序.在我的一个视图中,我有一个分段控件,其中包含表情符号作为显示的文本.但是,我有一个问题,即无论何时选择其中一个表情符号,它都会变黑,如下图所示:我认为问题与我的分段控件的选定状态的文本属性有关,而我在修复时的尝试是将所选状态的文本属性设置为与正常状态的文本属性相同:但是,这似乎不起作用.任何帮助,将不胜感激?

  2. ios – 检查字符串中是否包含表情符号

    我得到一个字符串的文本大小我唯一的问题是,如果字符串只包含一个表情符号,我的应用程序崩溃.有没有一个简单的方法来检查emojis,或者我必须创建一个所有可能的emojis的数组,然后使用它来检查它们?

  3. Swift通过unicode将国家代码转换成表情符号标志

    我正在寻找一个快速的方式来转换像:成即,D到1f1e9和E映射到1f1ea是什么我正在查看.utf8的字符串,但这返回一个整数.FWIW我的一般目标是能够使用任意国家代码并获得相应的表情符号标志.编辑:我也很好,只要持有一个表,做这个映射,如果它可用的地方.我google了,但没有找到它.这是一个将两个字母的国家/地区代码转换成其表情符号标志的通用公式:编辑Ooops,不需要通过嵌套的String

  4. android – 显示内置表情符号输入法

    我正在为android构建一个自定义的软键盘,并且想添加一个布局,以包含类似于默认的android键盘正在做的表情符号键.我已经搜索过,但似乎大多数人都试图从图像中显示自定义表情符号.我正在寻找显示Android附带的内置图标:似乎我应该可以使用Unicode字符从键盘发送图像,但我的第一个尝试似乎只生成了较早版本的emojis.如何支持手机最新的表情符号?另外,如何在我的键盘上显示emojis,如上图所示?

  5. php – 如何恢复已经存储在普通utf8中的4字节表情符号的正确编码 – 像这样:ðŸ〜Š?

    第一步是将字符集修改为utf8mb4.这改变了像这样的所有字符串到这样的字符串:.但我真正想要的是将~翻译成类似的东西.灵感来自IgnacioVazquez-Abrams’comment.下一个python代码片段显示原始程序Emoji到Mojibake,反之亦然(修复):总结以上是DEVMAX为你收集整理的php–如何恢复已经存储在普通utf8中的4字节表情符号的正确编码–像这样:?如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

  6. java – 按国家/地区代码获取表情符号标志

    有一个国家代码列表,我需要为每个代码附上表情符号标志.有没有办法从中提取unicode或找到国家代码的表情符号?

  7. angularjs – 表情符号支持textarea或contenteditable div

    尝试在写入时支持表情符号来实现textarea组件.我想要能够在div上呈现过滤/生成的html结果的原始文本.我的初步解决方案是但是我无法使用隐藏的文字区域.此外,为此,我将无法鼠标选择文本,删除或复制/粘贴安全.我也想到使用但不会处理ng-focus和ng-change.有没有人对如何继续这样做有什么好处?

  8. c# – Winforms / WPF应用程序中的颜色表情符号支持?

    所以无论如何,有没有办法开发WinForms或WPF,这将允许颜色表情符号在Windows8.1上运行?解决方法从.NET4.6.1开始,您无法开箱即用.颜色表情在WPF中不起作用.他们在XAML通用Windows应用程序上执行,但WPF具体而言不是.您现在只需要做一些UI层处理,为您要显示颜色的每个表情符号插入您选择的图像.这是一个糟糕的过程,但这是你现在所有的.

  9. 在iOS上创建一个很好的自定义表情符号聊天体验

    我试图想出可能的实现,基本上是一个扩展的UITextView,具有输入内联图像的功能.我已经看到有几十个开源项目可以处理使用自定义表情符号创建标签,UIWebView可以将文本与文本等内容一起绘制,但没有一个不能运行在本机的UITextView行为中:>自动更正>拼写>放大镜>选择工具提示和功能>期间的双倍空间在AppStore上看到的唯一一款应用程序,它为打字自定义表情提供了一个很好的,强大的体验,是Viber.所以问题是–他们是怎么做到的?

  10. javascript – iOS 8.3 Mobile Safari禁用表情符号渲染

    Apple最近发布了iOS8.3.他们添加了更多的Emojis,现在所有这些都在移动游猎中呈现.例如将呈现为表情符号图标.有没有办法禁用表情符号渲染?例如通过CSS还是JavaScript?

随机推荐

  1. iOS实现拖拽View跟随手指浮动效果

    这篇文章主要为大家详细介绍了iOS实现拖拽View跟随手指浮动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  2. iOS – genstrings:无法连接到输出目录en.lproj

    使用我桌面上的项目文件夹,我启动终端输入:cd然后将我的项目文件夹拖到终端,它给了我路径.然后我将这行代码粘贴到终端中找.-name*.m|xargsgenstrings-oen.lproj我在终端中收到此错误消息:genstrings:无法连接到输出目录en.lproj它多次打印这行,然后说我的项目是一个目录的路径?没有.strings文件.对我做错了什么的想法?

  3. iOS 7 UIButtonBarItem图像没有色调

    如何确保按钮图标采用全局色调?解决方法只是想将其转换为根注释,以便为“回答”复选标记提供更好的上下文,并提供更好的格式.我能想出这个!

  4. ios – 在自定义相机层的AVFoundation中自动对焦和自动曝光

    为AVFoundation定制图层相机创建精确的自动对焦和曝光的最佳方法是什么?

  5. ios – Xcode找不到Alamofire,错误:没有这样的模块’Alamofire’

    我正在尝试按照github(https://github.com/Alamofire/Alamofire#cocoapods)指令将Alamofire包含在我的Swift项目中.我创建了一个新项目,导航到项目目录并运行此命令sudogeminstallcocoapods.然后我面临以下错误:搜索后我设法通过运行此命令安装cocoapodssudogeminstall-n/usr/local/bin

  6. ios – 在没有iPhone6s或更新的情况下测试ARKit

    我在决定下载Xcode9之前.我想玩新的框架–ARKit.我知道要用ARKit运行app我需要一个带有A9芯片或更新版本的设备.不幸的是我有一个较旧的.我的问题是已经下载了新Xcode的人.在我的情况下有可能运行ARKit应用程序吗?那个或其他任何模拟器?任何想法或我将不得不购买新设备?解决方法任何iOS11设备都可以使用ARKit,但是具有高质量AR体验的全球跟踪功能需要使用A9或更高版本处理器的设备.使用iOS11测试版更新您的设备是必要的.

  7. 将iOS应用移植到Android

    我们制作了一个具有2000个目标c类的退出大型iOS应用程序.我想知道有一个最佳实践指南将其移植到Android?此外,由于我们的应用程序大量使用UINavigation和UIView控制器,我想知道在Android上有类似的模型和实现.谢谢到目前为止,guenter解决方法老实说,我认为你正在计划的只是制作难以维护的糟糕代码.我意识到这听起来像很多工作,但从长远来看它会更容易,我只是将应用程序的概念“移植”到android并从头开始编写.

  8. ios – 在Swift中覆盖Objective C类方法

    我是Swift的初学者,我正在尝试在Swift项目中使用JSONModel.我想从JSONModel覆盖方法keyMapper,但我没有找到如何覆盖模型类中的Objective-C类方法.该方法的签名是:我怎样才能做到这一点?解决方法您可以像覆盖实例方法一样执行此操作,但使用class关键字除外:

  9. ios – 在WKWebView中获取链接URL

    我想在WKWebView中获取tapped链接的url.链接采用自定义格式,可触发应用中的某些操作.例如HTTP://我的网站/帮助#深层链接对讲.我这样使用KVO:这在第一次点击链接时效果很好.但是,如果我连续两次点击相同的链接,它将不报告链接点击.是否有解决方法来解决这个问题,以便我可以检测每个点击并获取链接?任何关于这个的指针都会很棒!解决方法像这样更改addobserver在observeValue函数中,您可以获得两个值

  10. ios – 在Swift的UIView中找到UILabel

    我正在尝试在我的UIViewControllers的超级视图中找到我的UILabels.这是我的代码:这是在Objective-C中推荐的方式,但是在Swift中我只得到UIViews和CALayer.我肯定在提供给这个方法的视图中有UILabel.我错过了什么?我的UIViewController中的调用:解决方法使用函数式编程概念可以更轻松地实现这一目标.

返回
顶部