Добавление разрыва строки в UITextView - PullRequest
60 голосов
/ 13 сентября 2010

У меня есть UITextView, который занимает NSString с форматированием stringWithUTF8String. Он получает свои значения из базы данных, и я хочу, чтобы текст в базе данных отображался с разрывами внутри текста. Я попытался использовать \n, чтобы сделать это, но он отображается как текст. Выполнение этого на моей информационной странице приложения в виде простого текста работало, но я думаю, что причина, по которой он не работает при извлечении его из базы данных, заключается в форматировании.

Есть предложения?

Ответы [ 11 ]

87 голосов
/ 08 марта 2015

Если вы хотите добавить новую строку в Атрибут-Инспектор (AI) раскадровки Xcode5 / Xcode6, вы делаете это так:

  1. Перетащите UITextView.
  2. Дважды щелкните по нему, чтобы редактировать текст, поместите курсор туда, где вы хотите, чтобы разрыв абзаца.
  3. Нажмите alt-Enter пару раз, чтобы создать пустую строку и абзац.

Или, CTRL + Return, создать новую строку.

Теперь вы можете видеть эффект в режиме вывода / просмотра в раскадровке. enter image description here

37 голосов
/ 25 сентября 2010

Немного расширив ответ tc: если у вас есть новые строки в строке, вы, вероятно, захотите преобразовать их в \n (то есть, @"\\n" в Какао), затем сохранить в базе данных и, получив строку BACK из базы данных, вы, вероятно, хотите преобразовать их обратно в новые строки. Таким образом, вы будете использовать код примерно так:

NSString *saveString = [myTextField.text stringByReplacingOccurrencesOfString: @"\n" withString: @"\\n"];
// save it to the db
// ... later ...
NSString *dbString = // get the string from the db.
myTextField.text = [dbString stringByReplacingOccurrencesOfString: @"\\n" withString: @"\n"];
22 голосов
/ 30 марта 2011

Просто ниже:

{
textView.text = @"January: 7th,21st,\n February: 4th,18th,\n March: 4th,18th,\n April: 1st, 15th, 29th, \n May: 13th, 27th, \n June: 10th,24th, \n July: 8th, 22nd, \n August: 5th, 19th, \n September: 2nd, 16th, 30th, \n October: 14th, 28th, \n November: 11th, 25th";
        NSLog (@"Recycle Dates for Abbey Way");

}

будет выведено, как показано ниже в вашем textView или как вы выберете

Выход:

Январь: 7, 21,
4 февраля, 18 февраля
4 марта, 18 марта и т. Д.

10 голосов
/ 30 октября 2015

В Swift просто добавьте \ n между двумя строками

Пример:

let firstString = "Hello"

let secondString = "Senorita"

textview.text = firstString + "\n" + "secondString"
7 голосов
/ 27 февраля 2012

Я думаю, вы должны попробовать использовать "\ r".

Я протестировал его на Xcode 4.2.1, iOS 4.3

Редактировать: Это также работает в iOS 3.0 и iOS 5.1

2 голосов
/ 06 марта 2013

UITextView примет новые строки, но он не будет работать с возвратом кариеса.Вы должны будете убедиться, что ваш ввод верен.

Я пробовал это в редакторе IB, и у меня были некоторые проблемы с ним изначально.Затем я использовал текстовый редактор, набрал свой текст, а затем вставил его в редактор IB.

Это помогло мне.Ваш источник взят из базы данных, так что я думаю, что, скорее всего, новые строки на самом деле являются новыми строками, но, возможно, возвращают каретки или другие.Проверьте HEX строку вашего ввода.

1 голос
/ 01 октября 2015

когда вы получаете от дб. попробовать

NSString *content = [mytext stringByReplacingOccurrencesOfString:@"\\n" withString:@"\n"];
self.textView.text = content;
1 голос
/ 24 сентября 2010

Установите (UIKeyboardType) keyboardType и (UIReturnKeyTYpe) returnKeyType

, если вы встраиваете код.

Если вы используете IB, тогда просто перейдите на первую панель инспектора и установите TextInputTraits

0 голосов
/ 02 августа 2016

если вы получаете текст из Интернета, убедитесь, что вы поставили пробел до и после / n это решило мою проблему

как пример (php):

echo $item_detail['item_title']."  \n ";
0 голосов
/ 08 июля 2015

Расширяя ответ Оли ... В Swift код для обновления строки из базы данных:

let dbString = // get the string from the db.
myTextField.text = dbString.stringByReplacingOccurrencesOfString("\\\\n", withString: "\n")

Мне потребовалось время, чтобы выяснить это, так что я поделился.

...