it-swarm.dev

Adicionando uma quebra de linha a um UITextView

Eu tenho um UITextView que leva uma NSString com formatação stringWithUTF8String. Ele está obtendo seus valores de um banco de dados e eu quero que o texto no banco de dados seja renderizado com quebras dentro do texto. Eu tentei usar \n para fazer isso, mas é processado como texto. Fazendo isso na minha página de informações do aplicativo como texto direto funcionou, mas acho que a razão pela qual não está funcionando quando tirá-lo do banco de dados é por causa da formatação. 

Alguma sugestão?

58
Mark Cicero

Se você quiser adicionar nova linha no Inspetor de Atributos (AI) do storyboard Xcode5/Xcode6, faça desta maneira:

  1. Arraste um UITextView.
  2. Dê um duplo clique para editar o texto, coloque o cursor onde você quer quebrar o parágrafo.
  3. Pressione alt-Enter algumas vezes para criar uma linha e um parágrafo em branco.

Ou CTRL + Return faz uma nova linha.

Agora você pode ver o efeito na saída/modo de visualização no storyboard.enter image description here

86
imti

Expandindo a resposta do tc um pouco: quando você tem newlines na string, você provavelmente deseja convertê-los para \n (isto é, @"\\n" em Cocoa) e então salvar no banco de dados e, ao obter a string BACK do banco de dados, você provavelmente convertê-los de volta para novas linhas. Então você usaria um código como este:

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"];
36
Olie

Simplesmente o abaixo:

{
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");

}

será lançado como abaixo em seu textView ou o que você escolher

Saída:

7 de janeiro, 21,
Fevereiro: 4, 18,
Março: 4º, 18º etc etc

21
Alex McPherson

No Swift, basta adicionar "\ n" entre duas strings

Exemplo:

let firstString = "Hello"

let secondString = "Senorita"

textview.text = firstString + "\n" + "secondString"
8
Ravindra Kishan

Eu acho que você deveria tentar usar "\ r".

Eu testei no Xcode 4.2.1, iOS 4.3

Edit: Isso também funciona no iOS 3.0 e no iOS 5.1

7
hellangle

Um UITextView terá as novas linhas, mas não funcionará com retornos de cariage. Você terá que garantir que sua entrada esteja correta.

Eu tentei no editor do IB, e tive alguns problemas com ele inicialmente Então eu usei um editor de texto, digitei meu texto e colei no editor do IB.

Isso fez o truque, para mim. Sua fonte vem de um banco de dados, então eu acho que, provavelmente, as novas linhas são na verdade novas linhas, mas performam o retorno de carro ou outro. Verifique a string HEX da sua entrada.

2
Leander

Defina o tipo de teclado (UIKeyboardType) e (UIReturnKeyTYpe) returnKeyType 

se você está construindo em código.

Se você estiver usando o IB, vá ao primeiro painel do inspetor e configure o TextInputTraits

1
Vivek Sharma

quando você chega do db. experimentar

NSString *content = [mytext stringByReplacingOccurrencesOfString:@"\\n" withString:@"\n"];
self.textView.text = content;
1
Tuan Pham

se você está recebendo o texto da web, certifique-se de colocar um espaço antes e depois do/n que resolveu meu problema

como exemplo (php):

echo $item_detail['item_title']."  \n ";
0
Omar N Shamali