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

¿Fue útil?

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
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top