UITableView Cell显示问题

时间:2016-03-22 06:42:01

标签: swift uitableview ios-autolayout

screenShot when keyboard is appear Image wheh keyboard is not present Image of the storyboar :

我有一个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
    }
}

3 个答案:

答案 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()更新显示的约束后。