Попытка применить NSMutableParagraphStyle к новому NSRange Failing
Все,
Я настраиваю 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 ответ
Я не совсем понимаю вашу цель, но FWIW, если вы устанавливаете атрибут абзаца, вы можете использовать rangeForUserParagraphChange. Если курсор находится в конце textStorage, вы должны установить texting typingAttributes, потому что бессмысленно применять атрибут к пустому диапазону.