Подтвердить что ты не робот

Предоставление NSTextView некоторых дополнений/полей

Как я могу дать NSTextView некоторое дополнение/поле слева? Я знаю, как вы это делаете в NSTextField (путем подкласса NSTextFieldCell), но как вы это делаете в NSTextView?

EDIT: немного больше информации: 1. Текстовый вид имеет простой текст без богатого текста и никаких других причудливых материалов, таких как правильный текстовый редактор (например, вставки абзаца). 2. Можно ли использовать setTextContainerInset: для этого?

4b9b3361

Ответ 1

Вы можете попробовать подклассифицировать NSTextView и переопределить textContainerOrigin.

Подробнее здесь.

Например, этот подкласс даст верхнее и нижнее поле в 5 слева от 20 и справа от 10.

@implementation MyTextView

- (void)awakeFromNib {
    [super setTextContainerInset:NSMakeSize(15.0f, 5.0f)];
}


- (NSPoint)textContainerOrigin {
    NSPoint origin = [super textContainerOrigin];
    NSPoint newOrigin = NSMakePoint(origin.x + 5.0f, origin.y);
    return newOrigin;
}

@end

Ответ 2

Способ TextEdit (в режиме Wrap to Page) заключается в том, чтобы поместить текст в увеличенное изображение и установить большее представление в качестве вида документа в представлении прокрутки. Это больше работы по настройке, но не будет утечка информации о презентации (в виде специально настроенного стиля абзаца) в модель (текст).

Ответ 3

Просто добавьте к этому обновление. iOS7 добавляет свойство UITextView с именем textContainerInset. Вызов setTextContainerInset создаст поля внутри TextView для содержимого.

Ответ 4

Создайте изменяемый стиль абзаца (скорее всего, сделав изменчивую копию стиля абзаца по умолчанию, затем установите его отступы головы и отступ от первой строки в нужное вам левое поле. Затем установите этот стиль абзаца как значение атрибут NSParagraphStyleAttributeName для всего содержимого хранилища текстового представления.

Обратите внимание, что это будет отображаться в RTF и, возможно, HTML-данных, полученных из /, предоставленных вам по представлению. Если представление не доступно для чтения (т.е. Пользователь может редактировать текст, и вы получите или получите этот текст из представления), то вам, вероятно, следует избегать этого решения. Если пользователь может показать линейку и самостоятельно отредактировать стиль абзаца, вам обязательно следует избегать этого решения.