我的聊天应用程序中最后发送的消息被文本字段隐藏。
我尝试更改 UICollectionView
本身的高度,以便 view
从 TextView
的顶部开始,但这非常有问题而且看起来不健康。特别是当我每次键盘隐藏和再次显示时都必须更改它时。仅当键盘未显示时它才“有效”,但我仍然遇到问题,用户必须手动向下滚动才能看到最后一条消息。
@objc func handleKeyboardNotification(notification: NSNotification){
let userInfo = notification.userInfo!
let keyboardHeight = (userInfo[UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue.height
let duration = userInfo[UIKeyboardAnimationDurationUserInfoKey] as! Double
let curve = userInfo[UIKeyboardAnimationCurveUserInfoKey] as! UInt
let moveUp = (notification.name == NSNotification.Name.UIKeyboardWillShow)
bottomConstraint?.constant = moveUp ? -keyboardHeight : 0
let options = UIViewAnimationOptions(rawValue: curve << 16)
UIView.animate(withDuration: duration, delay: 0, options: options, animations: {
self.view.layoutIfNeeded()
}){ (completed) in
//##HERE IS THE MAIN PART##
let isKeyBoardShowing = notification.name == NSNotification.Name.UIKeyboardWillShow
if isKeyBoardShowing{
var newSize = CGSize()
newSize.height = (self.collectionView?.frame.size.height)! - (keyboardHeight + 48)
newSize.width = (self.collectionView?.frame.size.width)!
self.collectionView?.frame.size = newSize
self.collectionView?.contentOffset = CGPoint(x: 0, y: 1000)
}else{
var newSize = CGSize()
newSize.height = (self.collectionView?.frame.size.height)! + keyboardHeight
newSize.width = (self.collectionView?.frame.size.width)!
self.collectionView?.frame.size = newSize
}
}
}
这张图显示了键盘不显示时的问题:
与键盘显示相同:
最佳答案
检查显示消息的表格 View 的约束。它的底部约束应该来自您输入消息的消息 View 。
在最终使用 IQKeyboardManagerSwift
pod 来管理键盘时删除处理键盘的代码,它将处理应用内的所有文本字段。
关于ios - 文本字段隐藏聊天的最后一条消息 - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51983734/