【问题标题】:UITextView with emoticons editing带有表情编辑的 UITextView
【发布时间】:2013-03-28 07:04:43
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: ios text uitextview emoji emoticons


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 感谢您的建议。我也开始考虑字体定制,但我其实不知道如何制作像苹果表情符号这样的字体的全彩色位图字形。
    • 有没有办法在 iOS 上的字体中加入彩色图像?
    • 我设法使用自定义 png 图像创建带有 sbix 表的自定义字体。它在 OS X 上完美运行,但 iOS 拒绝渲染仅从 Apple Emoji 系统版本以外的字体映射到 sbix 表的字形。换句话说,如果您以编程方式将 UITextView 中的自定义字体设置为 UILabel 并将文本值设置为一些 emoji UTF 符号代码,即使在您的自定义字体中呈现该 UTF 代码的字形,也会呈现来自标准 emoji 字体的字形。
    猜你喜欢
    • 1970-01-01
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    • 2014-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多