我正在开发xmpp客户端应用程序。功能之一是发送微笑,用户应该能够像平常一样编辑其文字。 Viber App中的表情符号编辑是我要实现的最佳示例。

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

  • 我像通常的UIImageView一样创建表情符号,并使用当前的插入符rect将其作为 subview 放在UITextView上。我在文本 View 中使用5个空格作为文本占位符。存在两个问题:在中间插入文本时,在新行上放置图释(打印空白不会使插入符号移动到新行);当用户使用放大镜放置插入标记时,他可以将插入标记移过图释(通过5个空格),这是此过程中未调用的委托(delegate)方法。
  • 我尝试了EGOTextView。插入符的位置和调整新行时的大小存在问题。当使用一种线条大小时,会出现一些渲染瑕疵。
  • 我也尝试过使用UIWebView。但是,当成为第一响应者时,基于文本大小和其他工件的大小调整以及响应速度方面存在很大的问题。

  • 也许有人可以给我一些真正可行的解决方案的建议?

    最佳答案

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

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

  • 如果要定位 iOS 6.0 (UIKit类中对NSAttributedString的 native 支持),则可以尝试构建包含所需所有表情符号的自定义字体,并在NSAttributedString中使用它(属性字符串可以混合使用不同的字体) ,字体大小,样式等)。
  • 您可以使用 iOS 5 做类似的事情,但是由于您不能在NSAttributedString中使用UITextView(因此整个文本仅限于一种字体),您应该使用将实际字符和自定义字符结合在一起的字体表情符号:因此,应通过将所有表情符号添加到其中来扩展要用于键入的字体。无论如何,我不知道这是否会对许可证产生影响。

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

    10-06 13:32
    查看更多