Un modo semplice per disabilitare un UITextField?

voti
42

C'è un modo semplice per disattivare una UITextFieldin codice?

La mia applicazione ha 12 UITextFieldche sono tutti attivata per impostazione predefinita, ma quando viene rilevato un cambiamento nel mio controllo Segmento voglio disabilitare alcune delle UITextFieldseconda di cosa Segmento le scelte degli utenti.

Solo bisogno di sapere come disattivare o renderlo non modificabile?

Grazie

È pubblicato 01/03/2009 alle 13:16
fonte dall'utente
In altre lingue...                            


5 risposte

voti
98

In Objective-C:

textField.enabled = NO;

In Swift:

textField.isEnabled = false

Riferimento: UIControl.isEnabled

Risposto il 01/03/2009 a 13:31
fonte dall'utente

voti
27

Se si desidera anche indicare che il campo di testo è disabilitato si dovrebbe aggiungere altro codice:

se si utilizza UITextBorderStyleRoundedRect, è possibile grigio solo testo:

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

se si utilizza qualsiasi altro stile, è possibile anche in grigio di fondo:

textField.enabled = NO;
textField.backgroundColor = [UIColor lightGrayColor];
Risposto il 01/05/2012 a 09:56
fonte dall'utente

voti
10

Questo sarebbe il più semplice di tutti, quando si molteplici campi di testo troppo:

in viewDidLoad: (impostare il delegato solo per i campi di testo che non dovrebbe essere modificabile.

self.textfield.delegate=self;

e inserire questa funzione delegato:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
return NO;
}

Questo è tutto!

Risposto il 08/07/2013 a 18:40
fonte dall'utente

voti
1

Fai la categoria sul UIView.

aggiungere i seguenti metodi in quella categoria.

-(void)disable {
    self.alpha = 0.5;
    self.userInteractionEnabled = FALSE;
}

-(void)enable {
    self.alpha = 1.0;
    self.userInteractionEnabled = TRUE;
}

poi basta chiamare

yourTextField.disable();

In realtà, è possibile utilizzare questo in ogni caso che si desidera.

Risposto il 02/09/2016 a 06:51
fonte dall'utente

voti
-1

Si dovrebbe conformarsi UITextFieldDelegatee tornare falsein questo metodo. In questo modo il campo di testo è ancora selezionabile, ma non è disponibile per l'editing e il taglio

Codice è a Swift 4

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
  return false
}
Risposto il 18/05/2018 a 12:40
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more