number ios uitextfield uitextview

ios - number - ¿Cómo crear un UITextfield multilínea?



number of lines textfield swift (9)

Estoy desarrollando una aplicación donde el usuario tiene que escribir alguna información. Para este propósito necesito un UITextField que sea multilínea (en general, UITextField es una sola línea).

Cuando estoy buscando en Google, encuentro una respuesta de usar UITextView lugar de UITextfield para este propósito.


Además del comportamiento de varias líneas, la principal diferencia entre UITextView y UITextField es que la UITextView no propone un marcador de posición. Para omitir esta limitación, puede utilizar un UITextView con un "marcador de posición falso".

Consulte esta pregunta SO para obtener más información: marcador de posición en UITextView .


Hay otra opción que me funcionó:

Subclase UITextField y sobrescribir:

- (void)drawTextInRect:(CGRect)rect

En este método puedes por ejemplo:

NSDictionary *attributes = @{ NSFontAttributeName : self.font, NSForegroundColorAttributeName : self.textColor }; [self.text drawInRect:verticalAlignedRect withAttributes:attributes];

Este código renderizará el texto utilizando tantas líneas como sea necesario si el rect tiene suficiente espacio. Puede especificar cualquier otro atributo dependiendo de sus necesidades.

No utilice:

self.defaultTextAttributes

que forzará una línea de texto de representación


Ok, lo hice con algún truco;) Primero construya un UITextField y aumente su size esta manera:

CGRect frameRect = textField.frame; frameRect.size.height = 53; textField.frame = frameRect;

Luego UITextView un UITextView exactamente en la misma área en la que hizo mi UITextField y eliminó su background color . ¡Ahora parece que tienes un TextField múltiples líneas!


Puedes falsificar un UITextField usando UITextView. El problema que tendrá es que pierde la funcionalidad de marcador de posición.

Si elige utilizar un UITextView y necesita el marcador de posición, haga lo siguiente:

En su viewDidLoad establezca el color y el texto en los marcadores de posición:

myTxtView.textColor = .lightGray myTxtView.text = "Type your thoughts here..."

Luego haga que el marcador de posición desaparezca cuando se seleccione su UITextView:

func textViewDidBeginEditing (textView: UITextView) { if myTxtView.textColor.textColor == ph_TextColor && myTxtView.isFirstResponder() { myTxtView.text = nil myTxtView.textColor = .white } }

Cuando el usuario termina de editar, asegúrese de que hay un valor. Si no hay, vuelva a agregar el marcador de posición:

func textViewDidEndEditing (textView: UITextView) { if myTxtView.text.isEmpty || myTxtView.text == "" { myTxtView.textColor = .lightGray myTxtView.text = "Type your thoughts here..." } }

Otras características que puede necesitar para fingir:

UITextField a menudo usa mayúsculas en cada letra, puede agregar esa característica a UITableView:

myTxtView.autocapitalizationType = .words

UITextField''s no suele desplazarse:

myTxtView.scrollEnabled = false


Sí, un UITextView es lo que estás buscando. Tendrá que lidiar con algunas cosas de manera diferente (como la tecla de retorno) pero puede agregarle texto y le permitirá desplazarse hacia arriba y hacia abajo si hay demasiado texto dentro.

Este enlace tiene información sobre cómo hacer una pantalla para ingresar datos:

crear una pantalla de entrada de datos


Si debe tener un UITextField con 2 líneas de texto, una opción es agregar una 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 al tocar, y quería agregar un pequeño texto de subtítulo que diga "Tocar para editar" en el UITextField.

CGFloat tapLlblHeight = 10; UILabel *tapEditLbl = [[UILabel alloc] initWithFrame:CGRectMake(20, textField.frame.size.height - tapLlblHeight - 2, 70, tapLlblHeight)]; tapEditLbl.backgroundColor = [UIColor clearColor]; tapEditLbl.textColor = [UIColor whiteColor]; tapEditLbl.text = @"Tap to Edit"; [textField addSubview:tapEditLbl];


Un suplemento a la respuesta de h4xxr en lo anterior, una forma más fácil de ajustar la altura de UITextField es seleccionar un estilo de borde cuadrado en los inspectores de atributos-> Campo de texto. (De manera predeterminada, el estilo de borde de un campo de extensión de UIT es elipse).

Referencia: Respondió a Brian aquí: ¿Cómo establecer la altura de UITextField?


usa UITextView en lugar de UITextField


UITextField es específicamente de una sola línea.

Su búsqueda en Google es correcta, necesita usar UITextView lugar de UITextField para mostrar y editar texto de UITextField .

En Interface Builder, agregue un UITextView donde lo desee y seleccione la casilla "editable". Será multilínea por defecto.