UITextView与表情符号编辑

yar*_*nov 6 text emoticons uitextview ios emoji

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

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

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

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

Ale*_*rrù 2

我不太喜欢 UITextView/UITextInput 的矩形和范围机制,但我尝试给你一个(未经测试的)建议,也许可以达到预期的结果。

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

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

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

否则,您总是可以更底层,使用CoreText实现您自己的自定义 textView ,但我认为这将是一项艰巨的工作。