6

我正在开发 xmpp-client 应用程序。其中一项功能是发送微笑,用户应该能够像往常一样编辑其文本。Viber App中的表情编辑是我想要实现的最佳示例。

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

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

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

4

1 回答 1

2

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

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

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

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

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

于 2013-04-05T20:48:53.023 回答