我正在尝试实现一个可编辑的textView
,并能够嵌入“自定义View
”,如下所示:
此视图包含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
}