[RESOLU]Swift : TextField en tant que Navigation Item

Procuste34Procuste34 Membre
février 2016 modifié dans API UIKit #1

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 :


 

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): 


     


  • CéroceCéroce Membre, Modérateur
    Pour le curseur je ne sais pas, mais pour le clavier, il faut appeler la méthode -resignFirstResponder sur le textField.
  • oui c'est le delegate "textfieldshouldReturn" qui est appelé lorsque tu appuies sur "retour" du clavier. Dans cette méthode tu peux faire : 



    textField.resignFirstResponder()
    return true
  • 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


  • Joanna CarterJoanna Carter Membre, Modérateur
    février 2016 modifié #7

    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 


  • Joanna CarterJoanna Carter Membre, Modérateur
    Arf, arf, arf :)
  • Bizarre comme bug... 


  • AliGatorAliGator Membre, Modérateur
    Change la tintColor de ton TextField.
  • Nikel, merci ;)


Connectez-vous ou Inscrivez-vous pour répondre.