Вот моя проблема:
Я использую Core Data для хранения расширенного ввода текста из приложений iOS и/или OS X и хотел бы, чтобы изображения вставлялись в NSTextView или UITextView для: а) сохранить свое первоначальное разрешение и b) на дисплее масштабируется, чтобы соответствовать текстуру правильно, что означает масштабирование в зависимости от размера представления на устройстве.
В настоящее время я использую - (void)textStorage:(NSTextStorage *)textStorage didProcessEditing:(NSTextStorageEditActions)editedMask range:(NSRange)editedRange changeInLength:(NSInteger)delta
для поиска вложений и затем генерирую изображение с масштабным коэффициентом и назначая его атрибуту textAttachment.image.
Этот вид работ, потому что я просто изменяю масштабный коэффициент, и исходное изображение сохраняется, но я считаю, что более элегантным решением будет использование подкласса NSTextAttachmentContainer и возврат из него CGREct соответствующего размера с помощью
- (CGRect)attachmentBoundsForTextContainer:(NSTextContainer *)textContainer proposedLineFragment:(CGRect)lineFrag glyphPosition:(CGPoint)position characterIndex:(NSUInteger)charIndex
Итак, мой вопрос: как мне создать и вставить такой подкласс?
Я использую textStorage: didProcessEditing для итерации по каждому вложению и замену его NSTextAttachmentContainer собственным классом или я могу просто создать категорию, а затем каким-то образом использовать эту категорию для изменения поведения по умолчанию. Последнее кажется гораздо менее навязчивым, но как мне заставить текстовые элементы автоматически использовать эту категорию?
Oops: Только что заметил, что NSTextAttachmentContainer - это протокол, поэтому я предполагаю, что создание категории в NSTextAttachment и переопределение метода выше - это вариант.
Mmm: нельзя использовать категорию для переопределения существующего метода класса, поэтому я думаю, что подкласс - это единственный вариант, в каком случае я могу получить UITextView для использования моего подкласса вложений, или мне нужно перебирать атрибут string, чтобы заменить все NSTextAttachments с экземплярами MYTextAttachment. И каково будет влияние отмены этой строки на OS X, чтобы сказать по умолчанию OS X NSTextAttachment (который отличается от класса iOS)?