2017-10-14 1 views
3

So habe ich zwei UITextFields: Name und Menge und zwei UIButtons: Einkommen, Kosten.
Wenn ich die Kosten-Taste drücke, möchte ich meine amount Textfeldfarbe auf rot oder grün ändern, wenn die Einkommen-Taste gedrückt wird.UITextfield Textfarbe ändert sich nicht, während nicht im Fokus

Dies funktioniert nur, wenn amount Textfeld im Fokus ist, wenn name Textfeld im Fokus ist, wird die Farbe nicht für Menge geändert.

Gibt es eine Möglichkeit, die Farbe des Textfelds zu ändern, wenn es nicht im Fokus ist?

edit:

Hier ist mein Code, wo ich die Farbe ändern:

@IBAction func typeBtnPressed(_ sender: UIButton) { 
    if sender.tag == Buttons.expense.rawValue { 
     amountTxt.textColor = .red 
    } else { 
     amountTxt.textColor = .green 
    } 
} 
+0

Geben Sie Ihren relevanten Code – iPatel

+0

@iPatel: mit Code aktualisiert. – Kobe

+0

hast du die bruchstelle gesetzt und überprüft? –

Antwort

3

Es scheint iOS verwendet standardmäßig attributedText und nicht Text, das ist, warum nichts geschieht, und auf Fokus es scheint es braucht, um Ihre textColor berücksichtigt, tun nur

let color: UIColor 

if sender.tag == Buttons.expense.rawValue { 
    color = .red 
} else { 
    color = .green 
} 

let attributedText = NSMutableAttributedString(attributedString: amountTxt.attributedText!) 

attributedText.setAttributes([NSAttributedStringKey.foregroundColor : color], range: NSMakeRange(0, attributedText.length)) 

amountTxt.attributedText = attributedText 

Dies wird dann sobald arbeiten Taste gedrückt wird

3

Nachdem die textColor festgelegt wurde, muss der Wert dem textField neu zugewiesen werden.

textField.color = newColor 
textField.text = text 
+0

Dieser arbeitete für mich. Wahrscheinlich ein bisschen hacky, aber zumindest ist es weniger Code als jedes Mal, wenn eine attributierte Zeichenfolge neu erstellt wird. :) – TiM

Verwandte Themen