¿Manera fácil de deshabilitar un UITextField?

¿Hay alguna manera fácil de desactivar un UITextField en el código?

Mi aplicación tiene 12 UITextField que están todos activados de forma predeterminada, pero cuando se detecta un cambio en mi Control de segmento, quiero desactivar parte del UITextField dependiendo de qué segmento elija el usuario.

¿Solo necesita saber cómo desactivarlo o hacerlo no editable?

Gracias

En Objective-C:

 textField.enabled = NO; 

En Swift:

 textField.isEnabled = false 

Referencia: UIControl.isEnabled

Si también desea indicar que el campo de texto está desactivado, debe agregar más código:

si usa UITextBorderStyleRoundedRect, solo puede poner gris el texto:

 textField.enabled = NO; textField.textColor = [UIColor lightGrayColor]; 

si usa otro estilo, también puede atenuar el fondo:

 textField.enabled = NO; textField.backgroundColor = [UIColor lightGrayColor]; 

Este sería el más simple de todos, cuando multiples campos de texto también:

en viewDidLoad: (establece el delegado solo para campos de texto que no deberían ser editables).

 self.textfield.delegate=self; 

e inserte esta función de delegado:

 - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ return NO; } 

¡Eso es!

Hacer categoría en UIView.

agregue los 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; } 

entonces simplemente llama

 yourTextField.disable(); 

En realidad, puede usar esto en cualquier vista que desee.

Debe cumplir con UITextFieldDelegate y devolver false en este método. De esta manera, el campo de texto aún puede seleccionarse, pero no está disponible para editar y cortar

El código está en Swift 4

 func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { return false }