2017-02-06 1 views
0

Ich habe zwei Textfelder dateNTextField und prenomTextField die nur dateNTextField des Delegierten festgelegt ist:textFieldShouldBeginEditing durch die falsche Textfeld trigged wird

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { 
    if textField.tag == self.dateNTextField.tag { 
     print(textField.tag) 
     self.view.endEditing(true) 
    } 
    return true 
} 

Allerdings habe ich das gleiche Ergebnis für den Klick auf beiden Textfelder auch, dass sie verschiedene Tags haben ! Jede Hilfe wäre sehr willkommen.

Edit:

override func viewDidLoad() 
{ 
self.dateNTextField.delegate = self 
let tapGestureRecognizer = UITapGestureRecognizer(target:self, action:#selector(chooseImage(recognizer:))); 
self.picker.delegate = self 
profilImage.isUserInteractionEnabled = true 
profilImage.addGestureRecognizer(tapGestureRecognizer) 
tapGesture.cancelsTouchesInView = true 
self.view.addGestureRecognizer(tapGesture) 
tapGesture.delegate = self 
self.dateNTextField.accessibilityIdentifier = "date" 
self.prenomTextField.accessibilityIdentifier = "prenom"} 
+0

und was damit passiert: 'if textField == self.dateNTextField {'? –

+0

Ich bekomme die gleichen Ergebnisse. –

+0

Sie möchten die Tastatur grundsätzlich ausblenden, sobald der Benutzer auf das 'dateNTextField' klickt? –

Antwort

1

Versuchen Sie, Ihre return true Anweisung in Ihrem if Zustand zu versetzen.

0

Es sieht aus wie Ihre Textfelder gleich Tags haben. Versuchen Sie Textfelder statt Schlagworte

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { 
    if textField == self.dateNTextField{ 
     self.view.endEditing(true) 
    } 
    return true 
} 
+0

Sie haben verschiedene Tags. Und ich habe bereits versucht 'if textField == self.dateNTextField {' aber das gleiche –

+0

@OmarChaabouni ohne Initialisierungs-Code ist es sehr schwer zu verstehen, was schief läuft. Wenn Sie das Textfeld nicht als bearbeitbares Element verwenden möchten, warum verwenden Sie nicht stattdessen UILabel? –

+0

@OmarChaabouni Die obige Antwort ist perfekt. Stellen Sie also sicher, dass Ihr textField mit Delegierten verknüpft ist. –

0

Alternativ können Sie Kennungen eingestellt (dateNTextField.accessibilityIdentifier zum Beispiel), anstatt Tags.

Initialisiere sowohl die Textfelder und deren Kennungen gesetzt sofort und beziehen sich dann nur durch ihre ID zu ihnen.

+0

Ich habe es versucht, aber immer noch nicht funktioniert –

0

Stattdessen Tag Textfeld verwenden, sollten Sie diese verwenden:

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { 
    if textField == self.dateNTextField { 
     print(textField.tag) 
     self.view.endEditing(true) 
    } 
    return true 
} 

Es wird für Sie arbeiten.

Verwandte Themen