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];