Попытка применить NSMutableParagraphStyle к новой ошибке NSRange - PullRequest
0 голосов
/ 05 августа 2010

Все,

Я настраиваю NSTextView, чтобы в основном поддерживать вставку текста и отступов котельной пластины.Я сталкиваюсь с проблемой, когда отступ текста панели котла применяется к тексту, не связанному с котлом, после того, как я удаляю стиль отступа плиты котла из редактируемого диапазона (я удаляю стиль, когда пользователь нажимает ввод).Вот где все становится странным:

С текстовой линейкой, выставленной в редакторе, я вижу поведение, которое меняет отступ.После ввода клавиши возврата я запускаю следующий код:

NSMutableParagraphStyle *style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy]; 
[style setTabStops: [NSArray array]];
[style setHeadIndent:0];
[style setFirstLineHeadIndent:0];
NSRange effectiveRange = [textView rangeForUserTextChange];
[self applyStyleToRange:effectiveRange style:style];
[style release];

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

Я разместил в Интернете видео (30 секунд, 1,3 МБ), которое показывает проблему:

http://gordonjl.com/files/indentingProblem%20-%20Computer.m4v

Кроме того: Да, это ужасный способ сделать это, но это последняя ошибка в этом выпуске, и я должен отправить ее.В следующем выпуске я надеюсь вставить NSTextViews в область прокрутки и управлять им более явным образом.До тех пор, помогите!

1 Ответ

0 голосов
/ 18 августа 2010

Я не совсем понимаю вашу цель, но FWIW, если вы устанавливаете атрибут абзаца, вы можете использовать rangeForUserParagraphChange. Если курсор находится в конце textStorage, необходимо установить typingAttributes для textView, поскольку бессмысленно применять атрибут к пустому диапазону.

...