Un moyen facile de désactiver un UITextField?
Existe-t-il un moyen facile de désactiver un UITextField
dans le code?
Mon application a 12 UITextField
qui sont tous activés par défaut, mais lorsqu'une modification est détectée dans mon contrôle de Segment, je veux désactiver une partie du UITextField
en fonction du Segment choisi par l'utilisateur.
Juste besoin de savoir comment le désactiver ou le rendre non modifiable?
Merci
5 réponses
Dans L'Objectif-C:
textField.enabled = NO;
Dans Swift:
textField.isEnabled = false
Référence: UIControl.isEnabled
Si vous souhaitez également indiquer que le champ de texte est désactivé, vous devez ajouter plus de code:
Si vous utilisez UITextBorderStyleRoundedRect, vous ne pouvez que griser le texte:
textField.enabled = NO;
textField.textColor = [UIColor lightGrayColor];
Si vous utilisez un autre style, vous pouvez également griser l'arrière-plan:
textField.enabled = NO;
textField.backgroundColor = [UIColor lightGrayColor];
Ce serait le plus simple de tous , quand vous avez aussi plusieurs champs de texte:
Dans viewDidLoad: (définissez le délégué uniquement pour les champs de texte qui ne doivent pas être modifiables.
self.textfield.delegate=self;
Et insérez cette fonction déléguée:
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
return NO;
}
C'est tout!
Créer une catégorie sur UIView.
Ajouter les méthodes suivantes dans cette catégorie.
-(void)disable {
self.alpha = 0.5;
self.userInteractionEnabled = FALSE;
}
-(void)enable {
self.alpha = 1.0;
self.userInteractionEnabled = TRUE;
}
Alors appelez simplement
yourTextField.disable();
En fait, vous pouvez l'utiliser sur n'importe quelle vue que vous voulez.
Vous devez Vous conformer à UITextFieldDelegate
et retour false
dans cette méthode. De cette façon, le champ de texte est toujours sélectionnable, mais il n'est pas disponible pour l'édition et la coupe
Le Code est dans Swift 4
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
return false
}