NSAttributedString '\n' игнорируется

У меня есть один вид, единственным элементом интерфейса которого является UITextView. В viewDidLoad: я создаю строку с атрибутом "Текст\n" и устанавливаю текст, связанный с текстом как таковой:

NSAttributedString *string = [[NSAttributedString alloc] initWithString:@"Text\n"];  
[self.textView setAttributedText:string];

Моя проблема в том, что разрыв строки игнорируется при запуске приложения.

Если я использую NSString и setText:, которые не выполняются.

NSString *string = [[NSString alloc] initWithString:@"Text\n"];  
[self.textView setText:string];

Может ли кто-нибудь пролить свет на то, что происходит? Кажется, я ничего не могу найти в документации или нет.

Ответы

Ответ 1

Вы можете использовать это:

 NSAttributedString *cr = [[NSAttributedString alloc] initWithString: @"\n"];

Итак, если у вас есть две NSAttributedString (строка1 и строка2), вы можете сделать:

[string1 appendAttributedString: cr];
[string1 appendAttributedString: string2];

Это ужасно и не изящно.... но он работает!!!

Ответ 2

Я бы посоветовал вам использовать:

[[NSAttributedString alloc] initWithHTML:[@"Text<BR />" dataUsingEncoding:NSUTF8StringEncoding] documentAttributes:NULL];

Я использую это все время, и он отлично работает. Я даже сделал макрос из него:

#define html2AttributedString(htmlString)                                                                   \
    [[[NSAttributedString alloc] initWithHTML:[(htmlString) dataUsingEncoding:NSUTF8StringEncoding]         \
    documentAttributes:NULL] autorelease]

И затем вы можете сделать макрос для цвета, выравнивания, шрифта и т.д.

Короче говоря, вам просто нужно заменить все "\n" в вашей строке на <BR /> и использовать приведенный выше код. Для запасной части используйте:

[yourString stringByReplacingOccurrencesOfString:... withString:…];

Для iOS вы можете проверить эту страницу, в которой они дают вам замену.

Наши методы initWithHTML направлены на то, чтобы идеально соответствовать Версия для Mac. Этого можно достичь для персонажей, и у меня есть единичные тесты, которые делают это совершенным. Что касается атрибутов, есть много вещей, которые нужно сделать немного отличается от iOS, чтобы добиться такого же взгляда. Я не буду тебя беспокоить с деталями.