【问题标题】:Replace words in UITextView with custom view用自定义视图替换 UITextView 中的单词
【发布时间】:2016-10-21 09:03:29
【问题描述】:

我正在处理与可编辑UITextView 相关的棘手情况。当用户在UITextView 上写某些单词时,我想用显示图标、单词(或单词)和另一个图标的“标签”替换这些单词。

就像这张图片:

我在这里遇到了几个问题:

  1. 如何用视图替换目标词?
  2. 如何处理目标词的文本删除?如果文本是,例如“足球”,则将显示视图,但如果我删除一个字符并获得“足球”,则视图应该消失并且文本应该返回。

已经对DTRichTextEditor 进行了一些测试,并且能够检测到目标词以突出显示它们改变它们的属性,但这是完全不同的。

【问题讨论】:

  • 我可以让你改变文字颜色和图标,但我想我必须尝试一下

标签: ios objective-c uitextview


【解决方案1】:

NSTextAttachment 将允许您将图像插入到 UITextView(它适用于任何属性字符串)。

let attributedString = NSMutableAttributedString(string: "This is a string with an attached image: ")
let attachment = NSTextAttachment()        
attachment.image = UIImage(named: "imageToInsert")
let attachmentString = NSAttributedString(attachment: attachment)
attributedString.appendAttributedString(attachmentString)
textView.attributedText = attributedString

当然,要呈现您的标签,您需要将您的类型动态呈现为图像。您可以通过为标签文本创建一个属性字符串并在其上调用 boundingRectWithSize 来做到这一点。使用此大小 + 其他元素和填充的大小,您将获得图形上下文并渲染文本、左图标和右图标,并调用 UIGraphicsGetImageFromCurrentImageContext 以获取结果图像。

【讨论】:

    【解决方案2】:

    您可以查看SubviewAttachingTextView。它提供了类似的功能。

    显示自定义视图:

    let attachment = SubviewTextAttachment(view: CustomView(frame: frame))
    textView.attributedText = NSAttributedString(attachment: attachment)
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2014-01-08
    相关资源
    最近更新 更多