number - Entrada de usuario multilínea en iOS: UITextField vs UITextView
number of lines textfield swift (5)
Definitivamente me gustaría ir con UITextView
. En caso de que desee configurar el texto del marcador de posición, UITextView+Placeholder
permite establecerlo fácilmente. Puedes instalarlo usando
pod ''UITextView+Placeholder'', ''~> 1.2''
en su archivo pod. Ahora puedes importar cabecera
#import <UITextView+Placeholder/UITextView+Placeholder.h>
Lo que ayuda a colocar fácilmente el marcador de posición.
UITextView *textView = [[UITextView alloc] init];
textView.placeholder = @"How are you?";
textView.placeholderColor = [UIColor lightGrayColor]; // optional
textView.attributedPlaceholder = ... // NSAttributedString (optional)
Necesito mostrar a los usuarios un "cuadro" de entrada de texto de varias líneas con una altura mayor que la altura estándar de un UITextField
. ¿Cuál debería ser el mejor o más correcto enfoque ?:
- Utilice un
UITextField
y cambie su altura en el código o aplicando una determinada restricción de altura. - Utilizando un
UITextView
editable. Esto es multilínea pero no tiene marcador de posición por defecto, supongo que debería implementar esa función en el código.
No puede hacer texto multilínea utilizando UITextField
. Debe ir con UITextView
e implementar la lógica del marcador de posición.
Vaya con la opción dos, la altura del campo de texto no se puede cambiar y no muestra la segunda línea ...
LÓGICA DEL LUGAR:
textView.text = "Placeholder"
textView.textColor = UIColor.lightGrayColor()
func textViewDidBeginEditing(textView: UITextView) {
if textView.textColor == UIColor.lightGrayColor() {
textView.text = nil
textView.textColor = UIColor.blackColor()
}
}
func textViewDidEndEditing(textView: UITextView) {
if textView.text.isEmpty {
textView.text = "Placeholder"
textView.textColor = UIColor.lightGrayColor()
}
}
Desde Text View Placeholder Swift .
UITextField
es específicamente una sola línea.
Utilice UITextView
lugar de texto multilínea.
Para implementar el marcador de posición en UITextView use esta lógica / código.
Primero configure el UITextView para que contenga el texto del marcador de posición y ajústelo a un color gris claro para imitar el aspecto del texto del marcador de posición de un UITextField. Puede hacerlo en viewDidLoad
o en la creación de la vista de texto.
Para Swift
textView.text = "Placeholder"
textView.textColor = UIColor.lightGrayColor()
Para Objective-C
textView.text = @"Placeholder";
textView.textColor =[UIColor lightGrayColor];
Luego, cuando el usuario comienza a editar la vista de texto, si la vista de texto contiene un marcador de posición (es decir, si su color de texto es gris claro), borre el texto del marcador de posición y configure el color del texto en negro para acomodar la entrada del usuario.
Para Swift
func textViewDidBeginEditing(textView: UITextView) {
if textView.textColor == UIColor.lightGrayColor() {
textView.text = nil
textView.textColor = UIColor.blackColor()
}
}
Para Objective-C
- (BOOL) textViewShouldBeginEditing:(UITextView *)textView
{
if (textView.textColor == [UIColor lightGrayColor]) {
textView.text = @"";
textView.textColor = [UIColor blackColor];
}
return YES;
}
Luego, cuando el usuario termina de editar la vista de texto y se resigna como el primer respondedor, si la vista de texto está vacía, reinicie su marcador de posición agregando nuevamente el texto del marcador de posición y configurando su color en gris claro.
Para Swift
func textViewDidEndEditing(textView: UITextView) {
if textView.text.isEmpty {
textView.text = "Placeholder"
textView.textColor = UIColor.lightGrayColor()
}
}
Para Objective-C
- (void)textViewDidEndEditing:(UITextView *)textView{
if ([textView.text isEqualToString:@""]) {
textView.text = @"Placeholder";
textView.textColor =[UIColor lightGrayColor];
}
}
También agregue UITextViewDelegate
en el controlador de vista.
Para Swift 3
UITextView
no tiene inherentemente una propiedad de marcador de posición, por lo que tendría que crear y manipular uno mediante programación utilizando los métodos UITextViewDelegate
.
(Nota: Agregue UITextViewDelegate
a la clase y establezca textView.delegate = self
).
Primero configure el UITextView
para que contenga el texto del marcador de posición y ajústelo a un color gris claro para imitar el aspecto del texto del marcador de posición de un UITextField
. Puede hacerlo en viewDidLoad
o en la creación de la vista de texto.
textView.text = "Placeholder"
textView.textColor = UIColor.lightGray
Luego, cuando el usuario comienza a editar la vista de texto, si la vista de texto contiene un marcador de posición (es decir, si su color de texto es gris claro), borre el texto del marcador de posición y configure el color del texto en negro para acomodar la entrada del usuario.
func textViewDidBeginEditing(_ textView: UITextView) {
if textView.textColor == UIColor.lightGray {
textView.text = nil
textView.textColor = UIColor.black
}
}
Luego, cuando el usuario termina de editar la vista de texto y se resigna como el primer respondedor, si la vista de texto está vacía, reinicie su marcador de posición agregando nuevamente el texto del marcador de posición y configurando su color en gris claro.
func textViewDidEndEditing(_ textView: UITextView) {
if textView.text.isEmpty {
textView.text = "Placeholder"
textView.textColor = UIColor.lightGray
}
}