Existe-t-il un moyen simple de désactiver un UITextField
dans le code?
Mon application dispose de 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 souhaite désactiver une partie de UITextField
en fonction du segment choisi par l'utilisateur.
Vous avez juste besoin de savoir comment le désactiver ou le rendre non modifiable?
Merci
Dans l'objectif-C:
textField.enabled = NO;
Dans Swift:
textField.isEnabled = false
Référence: IControl.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 pouvez uniquement 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, lorsque vous avez également 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 ça!
Faire une catégorie sur UIView.
ajoutez 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 il suffit d'appeler
yourTextField.disable();
En fait, vous pouvez l'utiliser sur n'importe quelle vue de votre choix.