У меня есть UITextView, использующий пользовательский подкласс NSTextContainer. Мой подкласс называется TDTBezierPathTextContainer
. Я создаю UITextView
так:
let textContainer = TDTBezierPathTextContainer(size:CGSize.zero) //NSTextContainer subclass
...
textView = UITextView(frame:r, textContainer:textContainer)
Это все работает, но мне нужно сохранить и восстановить точное состояние текстового представления. Для этого я использую протокол NSCoding.
Я кодирую текстовое представление так:
override public func encode(with aCoder: NSCoder) {
super.encode(with: aCoder)
aCoder.encode(textView, forKey: "textView")
}
Я декодирую вот так:
public required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
if let textView = aDecoder.decodeObject(forKey: "textView") as? UITextView {
textView.delegate = self
addSubview(textView)
self.textView = textView
}
}
Проблема в том, что кодировка UITextView
не кодирует мой пользовательский текстовый контейнер (даже если он находится на его графике). Когда я декодирую текстовое представление, оно, похоже, использует текстовый контейнер по умолчанию.
По-видимому, единственный способ указать текстовый контейнер - это когда создается экземпляр UITextView
, поэтому кажется невозможным восстановить мое текстовое представление с помощью моего пользовательского текстового контейнера.
Я попытался создать новое текстовое представление и настроить все соответствующие свойства одинаково, но восстановление текстового представления немного отличается.
Есть ли способ сохранить / восстановить UITextView
с пользовательским NSTextContainer
без изменений?