2017-07-14 2 views
0

Ich habe 4 TextField align zusammen und jeder ist mit einem Tag (1, 2, 3, 4), es funktioniert als Code-Eingabe. Ich möchte sicherstellen, dass, wenn ich geklickt habe oder irgendwo anders tippen, wo das aktuelle Feld der Codeeingabe das aktuelle Feld als seinen ersten Responder macht.BecomesFirstResponder nicht Tastatur in Swift 3

Beispielszenario

1 _ _ _

wenn ich sonst angeklickt, wo das erste Textfeld es Fokus auf dem ersten Textfeld

Mit dem Code Punkt sollte unter ich in der Lage war, dies zu tun, aber Das Problem ist, dass die Tastatur nicht angezeigt wird, wenn in der Codeeingabe kein aktueller Ersthelfer vorhanden ist.

func textFieldDidBeginEditing(_ textField: UITextField) { 
    if textField.tag != currentTag { 
     let currentResponder = textField.superview?.viewWithTag(currentTag) as? UITextField 
     currentResponder?.becomeFirstResponder() 
    } 
} 
+0

, was genau das Problem? Tastatur erscheint nicht beim Tippen auf Textfeld? – Bhanupriya

+0

set currentTag = 1 defaultly.im nicht sicher, ob ich ur qu richtig verstanden –

+0

@bhanupriya ja, Tastatur nicht erscheinen, ich denke, ich breche die Tastatur, bevor es erstellt wird, weil im Prozess der Ersthelfer, ich sofort ändern der Ersthelfer. Ich finde auch die Antwort. statt textFieldDidBeginEditing mit i verwenden textFieldShouldBeginEditing – niczm25

Antwort

1

Hier unser eigenes Responder wird mit den Standard-Responder des abgegriffenen Textfeldes overlaping so dass ich es 0,1 Sekunden verzögert und den Aufruf die Responder

Swift 3

func textFieldDidBeginEditing(_ textField: UITextField) { 
if textField.tag != currentTag { 
    let currentResponder = textField.superview?.viewWithTag(currentTag) as? UITextField 
    currentResponder?.perform(
       #selector(becomeFirstResponder), 
       with: nil, 
       afterDelay: 0.1 
      ) 
    } 
}