我有一个UITableView,它与superview的顶部和底部距离为0。 当键盘出现时我更新了底部约束,因此键盘不会隐藏表格。但是在更新底部约束时,最后两个或三个单元格不完全可见。我正在使用以下代码来更新底部约束。
func keyboardWillChangeFrameWithNotification(notification: NSNotification, showsKeyboard: Bool) {
let userInfo = notification.userInfo!
let animationDuration: NSTimeInterval = (userInfo[UIKeyboardAnimationDurationUserInfoKey] as! NSNumber).doubleValue
// Convert the keyboard frame from screen to view coordinates.
let keyboardScreenBeginFrame = (userInfo[UIKeyboardFrameBeginUserInfoKey] as! NSValue).CGRectValue()
if showsKeyboard
{
cntInputViewBottom.constant = keyboardScreenBeginFrame.size.height
}
else
{
cntInputViewBottom.constant = 0
}
}
答案 0 :(得分:0)
您正在使用UIKeyboardFrameBeginUserInfoKey
。这是帧变换动画开始时键盘的大小。您最好使用UIKeyboardFrameEndUserInfoKey
以获得最终帧。
答案 1 :(得分:0)
如果x是带有发送按钮的视图的高度。
if showsKeyboard
{
cntInputViewBottom.constant = keyboardScreenBeginFrame.size.height+ x
}
else
{
cntInputViewBottom.constant = x
}
答案 2 :(得分:0)
问题是你没有通知你的视图/控制器在之前和之后更新你的约束。
if showsKeyboard
{
self.view.layoutIfNeeded()
cntInputViewBottom.constant = keyboardScreenBeginFrame.size.height
self.view.layoutIfNeeded()
}
else
{
self.view.layoutIfNeeded()
cntInputViewBottom.constant = 0
self.view.layoutIfNeeded()
}
在&之前添加self.view.layoutIfNeeded()
更新显示的约束后。