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

42
demandé sur seggy 2009-03-01 15:16:20

5 réponses

Dans L'Objectif-C:

textField.enabled = NO;

Dans Swift:

textField.isEnabled = false

Référence: UIControl.isEnabled

99
répondu Joel Levin 2018-05-18 12:45:32

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];
28
répondu Mariana B. 2012-05-01 09:02:10

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!

10
répondu Ankish Jain 2015-08-07 09:59:57

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.

1
répondu Bhavesh 2016-09-02 06:57:40

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
}
-2
répondu onmyway133 2018-05-18 12:40:18