Una forma sencilla de deshabilitar un UITextField?
-
11-09-2019 - |
Pregunta
¿Hay una manera fácil de desactivar un UITextField
en código?
Mi aplicación tiene 12 UITextField
que están todos activada de forma predeterminada, pero cuando se detecta un cambio en mi control Segmento Quiero desactivar algunos de los UITextField
dependiendo de qué segmento de las selecciones del usuario.
Sólo necesita saber cómo desactivar o hacer que no editable?
Gracias
Solución
En Objective-C:
textField.enabled = NO;
En Swift:
textField.isEnabled = false
Referencia: UIControl.isEnabled
Otros consejos
Si usted también quiere indicar que el campo de texto está deshabilitada se debe añadir más código:
si se utiliza UITextBorderStyleRoundedRect, sólo se puede mostrar en gris texto:
textField.enabled = NO;
textField.textColor = [UIColor lightGrayColor];
si se utiliza cualquier otro estilo, también se puede mostrar en gris de fondo:
textField.enabled = NO;
textField.backgroundColor = [UIColor lightGrayColor];
Este sería el más simple de todos, cuando usted múltiples campos de texto también:
en viewDidLoad:. (Establecer el delegado sólo para los campos de texto que no deben ser editables
self.textfield.delegate=self;
e insertar esta función delegada:
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
return NO;
}
Eso es todo!
Hacer categoría en UIView.
añadir siguientes métodos en esa categoría.
-(void)disable {
self.alpha = 0.5;
self.userInteractionEnabled = FALSE;
}
-(void)enable {
self.alpha = 1.0;
self.userInteractionEnabled = TRUE;
}
a continuación, sólo llamar
yourTextField.disable();
En realidad, puede utilizar esto en cualquier vista que desea.
Debe ajustarse a UITextFieldDelegate
y false
volver en este método. De esta manera el campo de texto sigue siendo seleccionable, pero no está disponible para la edición y corte
El código es en Swift 4
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
return false
}