[RESOLU]Swift : TextField en tant que Navigation Item
Procuste34
Membre
Bonjour,
J'aimerai intégré un UITextField en tant que navigation item dans une vue, pour faire une rechercher ( comme sur facebook par exemple ).
Pour cela, j'ai mis mon TextField dans la navigation bar de ma vue ( en relation avec un Navigation Controller), tout marche, mais le problème c'est que j'ai l'impression que mon TextField est "buggé", quand je tape du texte, le curseur n'apparait pas, et quand je veux faire disparaitre le clavier quand la touche Retour est appuyé, le clavier ne s'en va pas...
Voici les screens pour plus de détails :
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
C'est possible de copier/coller ton code plutôt que d'avoir un screenshot ?
Sinon, textFieldShouldReturn(), tu retournes FALSE ?
ViewController.swift : ( c'est le seul controller)
import UIKit
class ViewController: UIViewController, UITextFieldDelegate
{
@IBOutlet weak var navField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
//self.navigationItem.title = "YourTitle"
self.navField.delegate = self;
navField.returnKeyType = UIReturnKeyType.Search
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
self.view.endEditing(true)
return false
}
}
Oui, c'est le code pour faire disparaà®tre le clavier. J'ai aussi testé avec true mais même résultat, le clavier ne bouge pas.
Voici le plan de mon Storyboard (la vue sur laquelle est situé le textfield est la deuxième):
oui c'est le delegate "textfieldshouldReturn" qui est appelé lorsque tu appuies sur "retour" du clavier. Dans cette méthode tu peux faire :
Super, merci à vous trois pour m'avoir répondu !
La fonction :
func textFieldShouldReturn(textField: UITextField) -> Bool // called when 'return' key pressed. return NO to ignore.
{
textField.resignFirstResponder()
return true;
}
Il faut ajouter le delegate UITextFieldDelegate
-class ViewController: UIViewController, UITextFieldDelegate
Et il faut ajouter ça dans le viewDidload :
navField.delegate = self
C'est pas nécessaire d'ajouter le code dans le viewDidLoad, tu peux connecter le délégué du UITextField au contrôleur dans le XIB/storyboard
Je viens de m'apercevoir que le curseur n'apparait pas quand on tape dans le Text Field car j'ai changé la couleur de la Navigation Bar
Bizarre comme bug...
Nikel, merci