使用键盘无法正确显示TableView动态页脚

时间:2017-01-09 10:56:55

标签: ios swift uitableview

我有UITableView动态内容(消息)。有时我必须向用户UITextField显示,以便输入内容。

为此,我创建了特殊UIView,并将此UIView放入我的TableFooterView

如果用户想要回答,则必须按下按钮。在这种情况下,将显示footerView:

if self.tableView != nil {
   if self.keyboardHeight == 0 {
      self.tableView.frame = CGRect(x: 0, y: 64, width: screenWidth, height: screenHeight - tabBarHeight - navigationBarHeight - 48 - self.keyboardHeight)
      self.scrollToBottom()
        } else {
           self.tableView.frame = CGRect(x: 0, y: 64, width: screenWidth, height: screenHeight - tabBarHeight - navigationBarHeight - self.keyboardHeight)
           self.scrollToBottom()
            }

self.scrollToBottomWithFooter()

self.keyboardHeight是真正的keyboardHeight

func keyboardWillShow(notification: NSNotification) {
    if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
        keyboardHeight = keyboardSize.height
        self.showUserTextInput()
    }
}

self.scrollToBottom只是一个将TableView滚动到最后一个可见行的函数。 self.scrollToBottomWithFooter不会滚动任何内容,我需要这个来显示页脚:

func scrollToBottomWithFooter() {
    self.tableView.scrollRectToVisible(self.tableView.convert((self.tableView.tableFooterView?.bounds)!, from: self.tableView.tableFooterView), animated: true)
}

所以,问题是在这种情况下页脚没有正确显示。在self.keyboardHeight == 0(即用户尚未点击UITextField)时正确显示,但如果显示键盘,则此脚注视图未正确显示,键盘后面还有几个像素。

UITableView.frame在这里不应该受到指责,因为用户很容易做到正确(只需手动滚动一点,并且有效),但它仍然很难看。

我在这里打破了什么?

example

0 个答案:

没有答案