1
votes

ScrollView ne s'est pas déplacé vers le haut lorsque vous cliquez sur le champ de texte à l'intérieur de tableView

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)

et le résultat est: entrez la description de l'image ici

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:

 entrez la description de l'image ici

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?


4 commentaires

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.


3 Réponses :


3
votes

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 >


0 commentaires

0
votes

Voici les bibliothèques les plus courantes et utilisées pour gérer un tel comportement:

  1. TPKeyboardAvoiding
  2. IQKeyboardManager

Vous pouvez également les installer via CocoaPods.


0 commentaires

2
votes

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:

https://github.com/hackiftekhar/IQKeyboardManager


1 commentaires

@JarvisTheAvenger excellente réponse avec un exemple de son utilisation.