J'ai essayé ce code: dans viewWillAppear:
@objc func keyboardWillAppear(notification:NSNotification) { print("keyboard appear") var info = notification.userInfo let keyBoardSize = info![UIKeyboardFrameEndUserInfoKey] as! CGRect scrollCreateEditContact.contentInset = UIEdgeInsetsMake(0.0, 0.0, keyBoardSize.height, 0.0) scrollCreateEditContact.scrollIndicatorInsets = UIEdgeInsetsMake(0.0, 0.0, keyBoardSize.height, 0.0) } @objc func keyboardWillDisappear(notification:NSNotification) { print("keyboard disappear") scrollCreateEditContact.contentInset = UIEdgeInsets.zero scrollCreateEditContact.scrollIndicatorInsets = UIEdgeInsets.zero }
et:
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillDisappear), name: Notification.Name.UIKeyboardWillHide, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillAppear), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
ce que je veux, c'est que le champ de texte ne soit pas couvert par le clavier lorsque le clavier apparaît comme ceci:
Ce code ne fonctionne que sur un champ de texte qui n'est pas à l'intérieur de tableView. Mais lorsque je clique sur le champ de texte à l'intérieur de tableView et que je l'enregistre, "le clavier apparaît" toujours détecté.
Quel est le code correct pour le champ de texte à l'intérieur de tableView non couvert par le clavier lorsque le clavier apparaît?
3 Réponses :
C'est un comportement courant, ios ne peut pas ajuster automatiquement le contenu au-dessus du clavier, contrairement à Android. Ma solution est que vous pouvez envelopper toutes ces vues (photo, champ de texte, etc.) dans tableView. Et utilisez la bibliothèque TPKeyboardAvoiding
.
pod 'TPKeyboardAvoiding'
Si vous utilisez le storyboard, définissez la classe de base tableView sur TPKeyboardAvoidingTableView
.
p >
Voici les bibliothèques les plus courantes et utilisées pour gérer un tel comportement:
Vous pouvez également les installer via CocoaPods.
Le moyen le plus simple de gérer ce problème est d'installer le pod pour IQKeyboardManager:
Installation via les cosses de cacao:
import IQKeyboardManagerSwift @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { IQKeyboardManager.shared.enable = true return true } }
Utilisation: p>
pod 'IQKeyboardManagerSwift'
Pour plus d'informations sur IQKeyboardManager, reportez-vous à ce lien:
@JarvisTheAvenger excellente réponse avec un exemple de son utilisation.
Pourquoi n'utilisez-vous pas la bibliothèque de pod IQkeyboardManager, il est très facile avec elle de gérer le clavier.
@JarvisTheAvenger Comment l'utiliser?
Installez simplement le pod 'IQKeyboardManagerSwift' et dans votre fichier appDelegate.swift, avez terminé le lancement, ajoutez la ligne suivante: IQKeyboardManager.shared.enable = true
Nous avions l'habitude d'avoir beaucoup de problèmes pour le gérer manuellement, puis nous sommes passés à IQKeyboardManager, c'est une excellente bibliothèque de pods.