Как создать подкласс NSTextAttachment?

Вот моя проблема:

Я использую Базовые данные для хранения ввода расширенного текста из приложений iOS и / или OS X и хотел бы, чтобы изображения вставлялись в NSTextView или UITextView, чтобы: а) сохранять свое исходное разрешение и б) на дисплее, чтобы масштабироваться, чтобы соответствовать текстовому представлению правильно, что означает масштабирование в зависимости от размера представления на устройстве.

В настоящее время я использую- (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 собственным классом, или я могу просто создать категорию, а затем каким-то образом использовать эту категорию, чтобы изменить поведение по умолчанию. Последнее кажется гораздо менее навязчивым, но как мне заставить мои textViews автоматически использовать эту категорию?

Упс: только что заметил, что NSTextAttachmentContainer - это протокол, поэтому я предполагаю, что создание категории для NSTextAttachment и переопределение метода выше - вариант.

Ммм: нельзя использовать Category для переопределения существующего метода класса, поэтому я полагаю, что подклассы - это единственная опция, в этом случае как мне получить UITextView для использования моего подкласса вложений, или мне нужно выполнить итерацию по attribuString, чтобы заменить все NSTextAttachments на экземпляры MYTextAttachment. И как повлияет разархивирование этой строки в OS X, скажем, по умолчанию в OS X NSTextAttachment (который отличается от класса iOS)?

Ответы на вопрос(2)

Ваш ответ на вопрос