用自定义视图替换UITextView中的单词

时间:2016-10-21 09:03:29

标签: ios objective-c uitextview

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

就像这张图片一样:

enter image description here

我在这里面临几个问题:

  1. 如何用视图替换目标词?
  2. 如何处理目标字上的文字删除?如果文本是,例如" football",将显示视图,但如果我删除一个字符并获得" footbal"视图应该消失,文本应该回来。
  3. 已经使用DTRichTextEditor进行了一些测试,并且能够检测目标词以突出显示它们更改其属性,但这有所不同。

2 个答案:

答案 0 :(得分:0)

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 以获取生成的图像。 / p>

答案 1 :(得分:0)

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

显示自定义视图:

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