UITextView与表情符号编辑

时间:2013-04-05 18:37:28

标签: ios text uitextview emoji emoticons

我正在开发xmpp-client app。其中一个功能是发送微笑,用户应该能够编辑类似usuall文本。 Viber App中的表情符号编辑是我想要实现的最佳示例。

我已经尝试了三种解决问题的方法:

  • 我像通常的UIImageView一样创建表情符号,并使用当前的插入符号矩阵将其作为子视图放在UITextView上。我在文本视图中使用5个空格作为文本占位符。有两个问题:在中间插入文本时将表情符号放在新行上(打印空白不会使插入符号移动到新行);当用户使用放大玻璃放置插入符号时,他可以通过表情符号(通过5个空格)移动插入符号,作为在此过程中未调用的委托方法。
  • 我试过EGOTextView。当添加新行时,插入位置和调整大小存在问题。当使用一行大小时,会有一些渲染工件。
  • 我也尝试过使用UIWebView。但是,当成为第一响应者时,基于文本大小和其他工件的大小调整存在很大问题,并且响应速度快。

可能有人可以给我建议真正有效的解决方案吗?

1 个答案:

答案 0 :(得分:2)

我并没有真正进入UITextView / UITextInput的rects和range机制,但我尝试给你一个(未经测试的)建议,可能会达到预期的结果。

内置的iOS表情符号是简单的字符,因此我们可以通过构建自定义字体(或扩展现有字体)来遵循相同的路径。 我们有两种选择:

  • 如果你想定位 iOS 6.0 (在UIKit类中对NSAttributedString有本机支持),你可以尝试构建一个包含你需要的所有表情符号的自定义字体,并在NSAttributedString内使用它(属性字符串可以混合不同的字体,字体大小,样式等)。

  • 您可以使用 iOS 5 执行类似操作,但由于您无法在NSAttributedString内使用UITextView(因此您只能使用一种字体整个文本)您应该使用将实际字符和自定义表情符号组合在一起的字体:因此您应该通过向其添加所有表情符号来扩展要用于键入的字体。无论如何,我不知道这是否会产生许可证影响。

否则,你总是可以使用CoreText实现自己的自定义textView,但是我总是会更低级别,但我认为这将是一项艰苦的工作。