Estou desenvolvendo um aplicativo em que o usuário precisa escrever algumas informações. Para este propósito, preciso de um UITextField
que seja multi-linha (em geral UITextField
é uma única linha).
Como estou pesquisando no Google, encontro uma resposta para usar em UITextView
vez de UITextfield
para esse fim.
ios
uitextfield
uitextview
raaz
fonte
fonte
Respostas:
UITextField
é especificamente apenas uma linha.Sua pesquisa no Google está correta, você precisa usar em
UITextView
vez deUITextField
para exibir e editar texto de várias linhas.No Construtor de interface, adicione o
UITextView
local desejado e selecione a caixa "editável". Será multilinha por padrão.fonte
Você pode falsificar um UITextField usando o UITextView. O problema é que você perde a funcionalidade do espaço reservado.
Se você optar por usar um UITextView e precisar do espaço reservado, faça o seguinte:
Em seu viewDidLoad, defina a cor e o texto como espaços reservados:
Em seguida, faça o espaço reservado desaparecer quando seu UITextView estiver selecionado:
Quando o usuário terminar de editar, verifique se há um valor. Se não houver, adicione o espaço reservado novamente:
Outros recursos que você pode precisar falsificar:
Geralmente, o UITextField coloca em maiúscula todas as letras; você pode adicionar esse recurso ao UITableView:
Normalmente, os UITextField's não rolam:
fonte
Ok, eu fiz isso com algum truque;) Primeiro construa um
UITextField
e aumente ésize
assim:Em seguida, crie um
UITextView
exatamente na mesma área que você criou o meuUITextField
e exclua o seubackground color
. Agora parece que você tem várias linhasTextField
!fonte
UITextView
. O objetivo de ter um UITextField é que ele se comporta de maneira diferente de umUITextView
.UITextView
eUITextfield
: elas herdam deUIScrollView
vsUIControl
, não editável por padrão vs. editável por padrão, multilinha vs. linha única, protocolos de delegados diferentes, não espaço reservado x espaço reservado.UITextView
é para parágrafos de texto. Use-o se precisar de um parágrafo de texto, e não o contrário.Além do comportamento de várias linhas, a principal diferença entre UITextView e UITextField é que o UITextView não propõe um espaço reservado. Para ignorar essa limitação, você pode usar um UITextView com um "espaço reservado falso".
Consulte esta pergunta SO para obter detalhes: Espaço reservado no UITextView .
fonte
Se você deve ter um UITextField com 2 linhas de texto, uma opção é adicionar um UILabel como uma subvisão do UITextField para a segunda linha de texto. Eu tenho um UITextField no meu aplicativo que os usuários geralmente não percebem que é editável ao tocar e eu queria adicionar um pequeno texto de legenda que diz "Toque para editar" ao UITextField.
fonte
Sim, um UITextView é o que você está procurando. Você terá que lidar com algumas coisas de maneira diferente (como a tecla de retorno), mas poderá adicionar texto a ela, e isso permitirá que você role para cima e para baixo se houver muito texto dentro.
Este link contém informações sobre como criar uma tela para inserir dados:
crie uma tela de entrada de dados
fonte
use UITextView em vez de UITextField
fonte
Um complemento à resposta do h4xxr acima, uma maneira mais fácil de ajustar a altura do UITextField é selecionar o estilo da borda quadrada no atributo inspetores-> Campo de texto. (Por padrão, o estilo da borda de um campo UIText é elipse.)
Referência: Brian respondeu aqui: Como definir a altura do UITextField?
fonte
Há outra opção que funcionou para mim:
Subclasse UITextField e substitua:
Neste método, você pode, por exemplo:
Esse código renderizará o texto usando quantas linhas forem necessárias, se o rect tiver espaço suficiente. Você pode especificar qualquer outro atributo, dependendo de suas necessidades.
Não use:
o que forçará a renderização de texto em uma linha
fonte