2013-04-05 84 views
7

我正在开发xmpp-client应用程序。其中一个特点是发送微笑,用户应该有能力编辑它像通用文本。 Viber App中的表情符号编辑是我想要实现的最佳示例。带表情符号的UITextView编辑

我已经尝试过三种方式来解决问题:

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

可能有人能给我一个真正有效的解决方案吗?

回答

2

我不是真的进入UITextView/UITextInput的Rects和范围机制,但我尝试给你一个(未经测试的)建议,可能会达到预期的结果。

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

  • 如果你想针对的iOS 6.0(即在UIKit类为NSAttributedString原生支持),您可以尝试建立一个包含所有你需要的表情自定义字体,和在你的NSAttributedString中使用它(属性字符串可以混合不同的字体,字体大小,样式等等)。

  • 你可以做的iOS 5类似的东西,但因为你不能使用NSAttributedStringUITextView(所以你只限于一个字体整个文本),你应该使用结合在一起,实际的字体字符和自定义图释:所以你应该扩展你想用来输入的字体,方法是将所有的图释添加到它。无论如何,我不知道这是否会产生许可证影响。

否则,你总是可以更低水平,如果采用CoreText自己的自定义的TextView,但我认为这将是一个艰苦的工作。

+0

谢谢你的建议。我也开始考虑字体定制,但我实际上不知道如何在像苹果表情符号这样的字体中制作全彩色的位图字形。 – yariksmirnov 2013-04-07 20:47:48

+0

有没有办法在iOS中的字体中包含彩色图像? – Stavash 2013-05-06 08:29:11

+0

我设法使用自定义png图像创建与sbix表的自定义字体。它完全可以在OS X上运行,但是iOS拒绝呈现只从字体映射到sbix表的字形,而不是系统版本的Apple Emoji。换句话说,如果您将UITextView中的自定义字体设置为UILabel,并将文本值设置为某些表情符号UTF符号代码,即使在您的自定义字体字形为该UTF代码提供的情况下,也会呈现标准表情符字体的字形。 – yariksmirnov 2014-04-10 22:16:08