2017-07-11 2 views
0

J'ai 3 champs de texte et un pickerView qui unhides lorsque l'un de ces domaines (m_unit) est actif donc je suis en train de cacher le clavier pour celui-ci:clavier Hiding en vue avec plusieurs champs de texte de Swift

func textFieldDidBeginEditing(_ textField: UITextField) { 
     textField.returnKeyType = UIReturnKeyType.done 
     save_button.isEnabled = false 
     if textField == self.m_unit { 
      self.drop_down.isHidden = false 
      textField.endEditing(true) 
     } 

Fonctionne correctement s'il n'y a pas d'autre champ de texte d'édition lorsque vous tapez sur m_unit. Dans ce cas, le clavier ne disparaît pas. En d'autres termes, lorsque je tape sur un champ de texte, il affiche le clavier, puis je tape sur le champ m_unit, mais le clavier reste. Comment puis-je réparer cela?

Répondre

0

Comme il semble que vous voulez afficher UIPickerView au lieu du clavier pour que textfield donné (m_unit) J'utiliser une approche différente :)

Vous pouvez définir UIPickerView comme entréeView pour UITextField (dans viewDidLoad ou loadView)

self.m_unit.inputView = yourPickerView 

Vous pouvez également vérifier cette question: UIPickerView as inputView of UITextField qui pourrait être double de la vôtre;)

+0

J'ai ajouté cette ligne à 'viewDidLoad', mais eu une erreur quand on tape TextField m_unit. Console: Terminaison de l'application due à l'exception non interceptée 'UIViewControllerHierarchyInconsistency', raison: 'Contrôleur de la vue enfant: doit avoir contrôleur parent: mais le parent demandé est: ' –

+0

Vous avez probablement déjà ajouté 'UIPickerView' en tant que sous-vue de votre vue' UIViewController'. Si ce n'est pas le problème, je vais regarder plus loin. – 5keeve

+0

:) je n'ai pas eu besoin de supprimer la vue elle-même, merci. beaucoup mieux, mais en quelque sorte sélecteur est maintenant des données manquantes. essayer de comprendre pourquoi –

0

textField.resignFirstResponder()

0

Essayez ce code:

func textFieldDidBeginEditing(_ textField: UITextField) { 
     textField.returnKeyType = UIReturnKeyType.done 
     save_button.isEnabled = false 
     if textField == self.m_unit { 
      textField.resignFirstResponder() 
      self.drop_down.isHidden = false 
     } 
0
  1. sélecteur vue textfield faux

    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { 
    //print("While entering the characters this method gets called") 
    
    if(textField == pickerViewTextField){ 
        return false; 
        } 
    
        return true; 
    } 
    
  2. utilisateur textfield délégué du code ci-dessous cacher clavier sur presse retour

    func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
    
        textField.resignFirstResponder() 
        return true 
    } 
    
  3. Ne pas oublier d'utiliser UITextFieldDelegate