我使用以下代码确保当用户打开键盘时,它会缓慢打开并推动视图。
func keyboardWasShown(notification: NSNotification){
tableViewChat?.tableView.isScrollEnabled = true
let info2 = notification.userInfo!
let keyboardFrame: CGRect = (info2[UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue
UIView.animate(withDuration: 4, animations: { () -> Void in
self.bottomConstraint.constant = keyboardFrame.size.height - self.navigationController!.navigationBar.frame.height
})
}
直到这里,一切都像魅力一样。现在我想在动画完成后执行这一行。
self.tableViewChat?.scrollToLastRow(animationBool: true)
如果动画未完全执行,则tableview不会向下滚动。如何在执行animate后执行scrollToLastRow?
感谢您的帮助和评论!
答案 0 :(得分:4)
只需使用动画的完成块。
UIView.animate(withDuration: 4, animations: { () -> Void in
self.bottomConstraint.constant = keyboardFrame.size.height - self.navigationController!.navigationBar.frame.height
},completion{
self.tableViewChat?.scrollToLastRow(animationBool: true)
})
这不会滚动tableview,直到动画结束。在这种情况下,4秒。