Eenvoudige manier om een ​​UITextField uitschakelen?

stemmen
42

Is er een gemakkelijke manier om een uit te schakelen UITextFieldin de code?

Mijn app beschikt over 12 UITextFielddie allemaal op standaard zijn ingeschakeld, maar wanneer er een verandering wordt gedetecteerd in mijn Segment controle wil ik een aantal van de uit te schakelen UITextField, afhankelijk van wat het segment van de gebruiker picks.

Hoeft alleen maar te weten hoe het uit te schakelen of maak het niet-bewerkbare?

Bedankt

De vraag is gesteld op 01/03/2009 om 13:16
bron van user
In andere talen...                            


5 antwoorden

stemmen
98

Objective-C:

textField.enabled = NO;

In Swift:

textField.isEnabled = false

Referentie: UIControl.isEnabled

antwoordde op 01/03/2009 om 13:31
bron van user

stemmen
27

Als u ook aan te geven dat het tekstveld is uitgeschakeld moet je meer code toe te voegen:

bij gebruik van UITextBorderStyleRoundedRect, kunt u alleen grijs uit tekst:

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

als het gebruiken van een andere stijl, kunt u ook grijs uit achtergrond:

textField.enabled = NO;
textField.backgroundColor = [UIColor lightGrayColor];
antwoordde op 01/05/2012 om 09:56
bron van user

stemmen
10

Dit zou de eenvoudigste van allemaal, wanneer u meerdere tekstvelden ook:

in viewDidLoad: (zet de afgevaardigde alleen voor tekstvelden die niet bewerkbaar moeten zijn.

self.textfield.delegate=self;

en plaatst deze gedelegeerde functie:

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

Dat is het!

antwoordde op 08/07/2013 om 18:40
bron van user

stemmen
1

Maak categorie op UIView.

voeg volgende methoden in die categorie.

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

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

dan gewoon bellen

yourTextField.disable();

Eigenlijk kun je dit gebruiken op elke weergave die u wilt.

antwoordde op 02/09/2016 om 06:51
bron van user

stemmen
-1

Je moet voldoen aan UITextFieldDelegateen terug te keren falsein deze methode. Op deze manier het tekstveld is nog steeds geselecteerd, maar het is niet beschikbaar voor het bewerken en snijden

Code is in Swift 4

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
  return false
}
antwoordde op 18/05/2018 om 12:40
bron van user

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