Estoy desarrollando una aplicación donde el usuario tiene que escribir alguna información. Para este propósito, necesito un UITextField
que sea de varias líneas (en general UITextField
es una sola línea).
Como estoy buscando en Google, encuentro una respuesta de usar en UITextView
lugar de UITextfield
para este propósito.
ios
uitextfield
uitextview
raaz
fuente
fuente
Respuestas:
UITextField
es específicamente de una sola línea.Su búsqueda en Google es correcta, debe usarla en
UITextView
lugar deUITextField
para mostrar y editar texto de varias líneas.En Interface Builder, agregue un lugar
UITextView
donde lo desee y seleccione el cuadro "editable". Será multilínea por defecto.fuente
Puede simular un UITextField usando UITextView. El problema que tendrá es que pierde la funcionalidad del marcador de posición.
Si elige usar un UITextView y necesita el marcador de posición, haga lo siguiente:
En su viewDidLoad establezca el color y el texto en marcadores de posición:
Luego, haga que el marcador de posición desaparezca cuando su UITextView esté seleccionado:
Cuando el usuario termine de editar, asegúrese de que haya un valor. Si no lo hay, agregue el marcador de posición nuevamente:
Otras características que puede necesitar falsificar:
UITextField a menudo capitaliza cada letra, puede agregar esa característica a UITableView:
Los UITextField no suelen desplazarse:
fuente
Ok, lo hice con algún truco;) Primero construí un
UITextField
e incrementado essize
así:Luego construya
UITextView
exactamente en la misma área que hizo miUITextField
, y eliminó subackground color
. ¡Ahora parece que tienes varias líneasTextField
!fuente
UITextView
. El punto de tener un UITextField es que se comporta de manera diferente que aUITextView
.UITextView
yUITextfield
: heredan deUIScrollView
vsUIControl
, no editable por defecto vs. editable por defecto, multilínea versus línea simple, diferentes protocolos delegados, sin marcador de posición versus marcador de posición.UITextView
es para párrafos de texto. Úselo si necesita un párrafo de texto, y no de otra manera.Además del comportamiento de varias líneas, la principal diferencia entre UITextView y UITextField es que UITextView no propone un marcador de posición. Para evitar esta limitación, puede usar un UITextView con un "marcador de posición falso".
Vea esta pregunta SO para más detalles: Marcador de posición en UITextView .
fuente
Si debe tener un UITextField con 2 líneas de texto, una opción es agregar un UILabel como una subvista del UITextField para la segunda línea de texto. Tengo un UITextField en mi aplicación que los usuarios a menudo no se dan cuenta de que se puede editar tocando, y quería agregar un pequeño texto de subtítulos que diga "Tap to Edit" al UITextField.
fuente
Sí, un UITextView es lo que estás buscando. Tendrás que lidiar con algunas cosas de manera diferente (como la tecla de retorno), pero puedes agregarle texto y te permitirá desplazarte hacia arriba y hacia abajo si hay demasiado texto adentro.
Este enlace tiene información sobre cómo hacer una pantalla para ingresar datos:
crear una pantalla de entrada de datos
fuente
use UITextView en lugar de UITextField
fuente
Un complemento a la respuesta de h4xxr en lo anterior, una forma más fácil de ajustar la altura del UITextField es seleccionar el estilo de borde cuadrado en los inspectores de atributos-> Campo de texto. (Por defecto, el estilo de borde de un UITextfield es elipse).
Referencia: Brian respondió aquí: ¿Cómo configurar la altura de UITextField?
fuente
Hay otra opción que funcionó para mí:
Subclase UITextField y sobrescribir:
En este método puedes, por ejemplo:
Este código representará el texto utilizando tantas líneas como sea necesario si el rect tiene suficiente espacio. Puede especificar cualquier otro atributo según sus necesidades.
No utilice:
que forzará una representación de texto de una línea
fuente