UITextView内部的自定义视图的存储/地图数据

时间:2019-05-27 02:07:06

标签: ios swift database uitextview html-parsing

我正在尝试实现一个可编辑的textView,并能够嵌入“自定义View”,如下所示:

enter image description here

此视图包含2个文本字段(正在显示单词定义)。 view根据选择的定义动态变化。我目前能够将其作为NSAttachment作为图像添加到textView中(因为我无法将自定义view附加到textView上),但是如果我这样做的话如果我需要更新视图,则无法访问自定义视图中的文本。

谁能给我一个解决方案,使我能够以某种方式存储自定义视图中的信息?我想确保以后可以实际访问数据,以防视图设计发生更改并且我想对其进行更新。我是否需要更改为WebView并以某种方式在HTML中创建自定义解析以查找定义信息,然后对其进行格式化?

编辑:用于创建NSAttachment的代码。 returnView()函数返回一个视图对象,如上面的照片中红色所示。 viewController的其余部分只是一个textView,它将NSAttributedString保存到核心数据对象。

func viewToNSAttachment() {

    let view = returnView()
    view.layoutIfNeeded()

    // Render Image
    let renderer = UIGraphicsImageRenderer(size: view.frame.size)
    let image = renderer.image {
        view.layer.render(in: $0.cgContext)
    }

    // Create Attachment
    let attachment = NSTextAttachment()
    attachment.image = image
    attachment.bounds = CGRect(origin: .zero, size: image.size)

    // Current Attributed String
    let atStr = NSMutableAttributedString(attributedString: textView.attributedText)

    // Insert Attachment
    let attachmentAtStr = NSAttributedString(attachment: attachment)
    if let selectedRange = textView.selectedTextRange {
        let cursorIndex = textView.offset(from: textView.beginningOfDocument, to: selectedRange.start)
        atStr.insert(attachmentAtStr, at: cursorIndex)
        atStr.addAttributes(self.textView.typingAttributes, range: NSRange(location: cursorIndex, length: 1))
    } else {
        atStr.append(attachmentAtStr)
    }
    textView.attributedText = atStr
}

0 个答案:

没有答案