iphone ios uitextfield

iphone - ¿Una forma fácil de deshabilitar un UITextField?



uitextfielddelegate (5)

¿Hay una manera fácil de deshabilitar un UITextField en el código?

Mi aplicación tiene 12 UITextField que están 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 necesitas saber como deshabilitarlo o hacerlo no editable?

Gracias


Debe ajustarse a UITextFieldDelegate y devolver false en este método. De esta manera, el campo de texto aún es seleccionable, pero no está disponible para edición y corte

El código está en Swift 4

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


En Objective-C:

textField.enabled = NO;

En Swift:

textField.isEnabled = false

Referencia: UIControl.isEnabled


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

en viewDidLoad: (establezca el delegado solo para los campos de texto que no deben ser editables.

self.textfield.delegate=self;

e inserta 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 solo llama

yourTextField.disable();

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


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

Si usa UITextBorderStyleRoundedRect, solo puede deshabilitar el texto:

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

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

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