J'utilise le code suivant pour faire défiler UITableView et son pied de page sur l'affichage/le masquage du clavier. Il fonctionnait bien avec moi dans iOS 10, mais une fois que j'ai mis à jour vers iOS 11, le défilement ne fonctionne pas bien.Défilement UITableView afficher/masquer le clavier iOS11
code:
func registerNotificationObservers()
{
NotificationCenter.default.addObserver(self, selector: #selector(ArticleDetailsVC.keyboardWillShow), name: .UIKeyboardWillShow, object: nil)
NotificationCenter.default.addObserver(self, selector:#selector(ArticleDetailsVC.keyboardWillHide), name: .UIKeyboardWillHide, object: nil)
}
func removeNotificationObservers()
{
NotificationCenter.default.removeObserver(self, name: .UIKeyboardWillShow, object: nil)
NotificationCenter.default.removeObserver(self, name: .UIKeyboardWillHide, object: nil)
}
@objc func keyboardWillShow(_ notification: Notification) {
print("keyboardWillShow")
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue
{
if self.commentsTableView.frame.origin.y == 0{
print("keyboardWillShow ..")
self.tableViewFooter.frame.origin.y -= keyboardSize.height - 50
self.commentsTableView.frame.origin.y -= keyboardSize.height
}
}
}
@objc func keyboardWillHide(_ notification: Notification) {
print("keyboardWillHide")
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue
{
if self.commentsTableView.frame.origin.y != 0{
print("keyboardWillHide ..")
self.tableViewFooter.frame.origin.y += keyboardSize.height + 50
self.commentsTableView.frame.origin.y += keyboardSize.height
}
}
}
espoir de résoudre ce problème.
essayé, pas travailler :( – user1553381
J'ai essayé votre code et le mien, le tableView se déplacer vers le haut lorsque le clavier montrant sur iOS 11. Souvenez-vous d'appeler votre 'registerNotificationObservers()' méthode et le code mien dans 'viewDidLoad()'. –
Mon code fonctionne bien quand l'application vient de démarrer, mais quand je cache le clavier par 'self.view.endEditing (true)' alors essayez de le montrer à nouveau, la table ne défile pas – user1553381