Dans un écran, view-scrollview-contentview, il y a beaucoup de champs de text dans le contenu, donc j'utilise un scrollview pour les faire apparaître dans un écran. Maintenant, le problème est que je ne pouvais pas cliquer ou taper dans le champ de text couvert le contentview. Mais je veux taper dans le champ de text et être capable de faire défiler l'écran aussi bien. J'ai essayé de voir beaucoup de réponses ici mais je n'ai pas pu find la bonne solution. Les options scrollview et contentview permettent d'activer l'interaction de l'user, d'activer / de désactiver le paramètre "retards sur le contenu" ou "Touches de contenu annulables" dans la vue déroulante, mais cela ne fonctionne pas. Appréciez toute aide.
Il suffit de créer deux notifications (une fois lorsque le keyboard apparaît et l'autre quand il disparaît) sur viewDidLoad :
//Notifications for keyBoard when appears. NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(keyboardWillShow), name:UIKeyboardWillShowNotification, object: nil) NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(keyboardWillHide), name:UIKeyboardWillHideNotification, object: nil)
puis appelez la fonction qui calcule le rembourrage et faites un défilement.
func keyboardWillShow(notification:NSNotification){ var userInfo = notification.userInfo! var keyboardFrame:CGRect = (userInfo[UIKeyboardFrameBeginUserInfoKey] as! NSValue).CGRectValue() keyboardFrame = self.view.convertRect(keyboardFrame, fromView: nil) var contentInset:UIEdgeInsets = self.scrollview.contentInset contentInset.bottom = keyboardFrame.size.height self.scrollview.contentInset = contentInset } func keyboardWillHide(notification:NSNotification){ var contentInset:UIEdgeInsets = UIEdgeInsetsZero self.scrollview.contentInset = contentInset }
Utilisez TPKeyboardAvoiding pour le défilement automatique lorsque vous click textfield.
https://github.com/michaeltyson/TPKeyboardAvoiding
Créez l'object TPKeyboardAvoidingScrollView et ajoutez textfield dans ce scrollview pour qu'il fonctionne correctement.
Dans le storyboard, utilisez le nom de class "TPKeyboardAvoidingScrollView" dans l'inspecteur d'identité et associez-le pour qu'il fonctionne correctement.