Comment résoudre les problèmes de keyboard dans Swift 3?

Le problème est que lorsque j'essaie d'écrire dans les champs de text, le keyboard les recouvre. Comment puis-je faire défiler le champ de text pour voir ce que j'écris? J'ai ci-dessous des lignes de code pour activer la touche de return et pour cacher le keyboard lorsque vous touchez à un endroit différent:

override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { self.view.endEditing(true) } func textFieldShouldReturn(_ textField: UITextField) -> Bool { self.view.endEditing(true) return false } 

Comment puis-je faire défiler le champ de text pour voir ce que j'écris

Cela peut être réalisé de deux façons:

  1. Vous pouvez gérer votre cadre par programmation sur le keyboard cacher et montrer comme @Taichi Kato
  2. Vous pouvez intégrer des bibliothèques qui servent le même but. Une telle bibliothèque est IQKeyBoardManager avec sa variante Swift comme IQKeyboardManagerSwift Vous pouvez le find sur GitHub et cocoapods

Pour atteindre, suivez les étapes ci-dessous:

SWIFT 3

  1. Installez simplement IQKeyboardManagerSwift depuis Github ou cocoapods

  2. Importer IQKeyboardManagerSwift dans Appdelegate

  3. Ajoutez les lignes de code ci-dessous dans la méthode AppDelegate didFinishLaunchingWithOptions .

     IQKeyboardManager.sharedManager().shouldResignOnTouchOutside = true; 

Objectif c

  1. Installez IQKeyBoardManager via n'importe quel support
  2. Importer #import "IQKeyboardManager.h" dans Appdelegate
  3. Ajoutez les lignes de code ci-dessous dans la méthode AppDelegate didFinishLaunchingWithOptions .

     IQKeyboardManager.sharedManager.shouldResignOnTouchOutside = true; 

Et c'est fait . C'est le seul code que vous devez écrire.

La solution la plus simple à ce problème consiste à placer tous les éléments dans un scrollview, puis à append la hauteur du keyboard à la constante du bas de la vue pour la superposition.

Lorsque le keyboard est affiché ou masqué, iOS envoie les notifications suivantes aux observateurs enregistrés:

UIKeyboardWillShowNotification UIKeyboardDidShowNotification UIKeyboardWillHideNotification UIKeyboardDidHideNotification

Alors voici ce que vous pouvez faire:

  1. Obtenez la taille du keyboard.
  2. Ajustez l'encart de contenu inférieur de votre vue de défilement par la hauteur du keyboard.
  3. Faites défiler le champ de text cible dans la vue.

Quelque chose comme ça:

  func keyboardWillShow(notification: NSNotification) { print("KEYBOARD WILL SHOW") let userInfo:NSDictionary = notification.userInfo! as NSDictionary let keyboardFrame:NSValue = userInfo.value(forKey: UIKeyboardFrameEndUserInfoKey) as! NSValue let keyboardRectangle = keyboardFrame.cgRectValue let keyboardHeight = keyboardRectangle.height bottomConstraint.constant = keyboardHeight + 8 UIView.animate(withDuration: 0.5, animations: { [weak self] in self?.view.layoutIfNeeded() ?? () }) UIView.animate(withDuration: 0.3) { self.view.layoutIfNeeded() } } func dismissKeyboard() { //Causes the view (or one of its embedded text fields) to resign the first responder status. view.endEditing(true) bottomConstraint.constant = 8 UIView.animate(withDuration: 0.5, animations: { [weak self] in self?.view.layoutIfNeeded() ?? () }) }