Un modo semplice per disabilitare un UITextField?
-
11-09-2019 - |
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
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
}