执行滚动和单元格高度更改时UITableView的奇怪滚动

时间:2017-03-22 14:46:31

标签: ios swift uitableview heightforrowatindexpath

我有一个包含大量单元格的UITableView。在具有UITextField的单元格上,如果键盘将隐藏文本字段,则滚动表格。对于一些细胞,我将细胞高度的变化添加到滚动。 这在表格的开头和中间工作正常,但如果有问题的单元格位于表格的底部,我会得到一些奇怪的跳跃和细胞消失。 在用户完成编辑之后,单元格的高度变回正常并且消失的单元格重新出现,但是表格向上滚动了一点。 我现在的问题是如何摆脱细胞的跳跃和消失?

这是我的代码:

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    if fieldIndex != [-99, -99] {
        if indexPath.section == fieldIndex[0] && indexPath.row == fieldIndex[1] {
            fieldIndex = [-99, -99]
            return 220.0
        }
    }
    return 80.0
}

func keyboardWillBeShown(_ sender: Notification) {
    let info: NSDictionary = (sender as NSNotification).userInfo! as NSDictionary
    let value: NSValue = info.value(forKey: UIKeyboardFrameBeginUserInfoKey) as! NSValue
    let keyboardSize: CGSize = value.cgRectValue.size
    let height = toolBar.frame.height
    let contentInset: UIEdgeInsets = UIEdgeInsetsMake(0.0, 0.0, keyboardSize.height + toolBar.frame.height + 60, 0.0)
    originalIntersect = tableView.contentInset
    tableView.contentInset = contentInset
    tableView.scrollIndicatorInsets = contentInset

    var aRect: CGRect = self.view.frame
    aRect.size.height -= keyboardSize.height
}

func keyboardWillBeHidden(_ sender: Notification) {
    let insets: UIEdgeInsets = UIEdgeInsetsMake(self.tableView.contentInset.top, 0, 0, 0)
    tableView.contentInset = originalIntersect
    tableView.scrollIndicatorInsets = originalIntersect
}

如果还有其他代码,您需要查看以帮助提问。

问候并谢谢 Adarkas

0 个答案:

没有答案