Einfache Möglichkeit, eine UITextField zu deaktivieren?

stimmen
42

Gibt es eine einfache Möglichkeit , eine deaktivieren UITextFieldim Code?

Meine app hat 12 , UITextFielddie alle gedreht werden standardmäßig auf, aber wenn eine Veränderung in meinem Segment Steuerung erkannt wird Ich möchte einen Teil der deaktivieren , UITextFieldje nachdem , was Segment des Benutzer wählt aus .

Ich muss einfach wissen, wie es zu deaktivieren oder nicht editierbar machen?

Vielen Dank

Veröffentlicht am 01/03/2009 um 13:16
quelle vom benutzer
In anderen Sprachen...                            


5 antworten

stimmen
98

In Objective-C:

textField.enabled = NO;

In Swift:

textField.isEnabled = false

Referenz: UIControl.isEnabled

Beantwortet am 01/03/2009 um 13:31
quelle vom benutzer

stimmen
27

Wenn Sie wollen auch zeigen, dass das Textfeld ist deaktiviert, sollten Sie mehr Code hinzu:

wenn UITextBorderStyleRoundedRect verwenden, können Sie nur Text grau aus:

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

wenn andere Art verwenden, können Sie auch Hintergrund grau aus:

textField.enabled = NO;
textField.backgroundColor = [UIColor lightGrayColor];
Beantwortet am 01/05/2012 um 09:56
quelle vom benutzer

stimmen
10

Dies wäre die einfachste von allen, wenn Sie mehrere Textfelder zu:

in viewDidLoad: (die Delegierten nur für Textfelder, die nicht bearbeitet werden sollen.

self.textfield.delegate=self;

und fügen Sie diese Delegatfunktion:

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

Das ist es!

Beantwortet am 08/07/2013 um 18:40
quelle vom benutzer

stimmen
1

Machen Sie Kategorie auf UIView.

Folgende Methoden in dieser Kategorie hinzufügen.

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

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

dann rufen Sie einfach

yourTextField.disable();

Eigentlich kann man diese verwenden, um auf jede Ansicht, die Sie wollen.

Beantwortet am 02/09/2016 um 06:51
quelle vom benutzer

stimmen
-1

Sie sollten entsprechen UITextFieldDelegateund das Rück falsein diesem Verfahren. Auf diese Weise das Textfeld ist noch wählbar, aber es ist für die Bearbeitung und das Schneiden nicht verfügbar

Code ist in Swift 4

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
  return false
}
Beantwortet am 18/05/2018 um 12:40
quelle vom benutzer

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