Domanda

C'è un modo semplice per disabilitare un UITextField in codice?

La mia app ha 12 UITextField che sono tutti attivata per impostazione predefinita, ma quando viene rilevato un cambiamento nel mio controllo Segmento voglio disabilitare alcuni dei UITextField seconda di cosa Segmento le scelte degli utenti.

solo bisogno di sapere come disattivare o renderlo non modificabile?

Grazie

È stato utile?

Soluzione

In Objective-C:

textField.enabled = NO;

In Swift:

textField.isEnabled = false

Riferimento: UIControl.isEnabled

Altri suggerimenti

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

se si utilizza UITextBorderStyleRoundedRect, si può solo in grigio testo:

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

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

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

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!

Fai la categoria sul UIView.

aggiungere seguendo metodi in quella categoria.

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

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

quindi basta chiamare

yourTextField.disable();

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

Si dovrebbe conformarsi alle UITextFieldDelegate e tornare false in questo metodo. In questo modo il campo di testo è ancora selezionabile, ma non è disponibile per la modifica e il taglio

Codice è a Swift 4

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
  return false
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top