UITableView 增加 contentInset 底部不滚动

Posted

技术标签:

【中文标题】UITableView 增加 contentInset 底部不滚动【英文标题】:UITableView increase contentInset bottom without scroll 【发布时间】:2020-07-31 02:45:41 【问题描述】:

我想在不滚动的情况下增加 tableView 内容底部插入

因为我有包含 textField 的单元格,但是当键盘出现时 textFields 是隐藏的

当键盘出现时,用户可以滚动到底部而不关闭键盘

所以我想在键盘出现时增加tableView内容底部插入而不滚动,

然后用户可以在不关闭键盘的情况下滚动到底部

【问题讨论】:

【参考方案1】:

为了获得键盘的高度,创建一个观察者,它调用一个给出键盘高度的方法,并使用这个高度计算并设置UITableView底部插图。

NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil)

下面的方法是一个观察者方法,当键盘出现时会被调用。

这里我认为UITableView 的高度与设备高度相同。如果UITableView 高度与设备高度不同,那么您必须在下面的代码中进行更改以设置正确的插入。

@objc func keyboardWillShow(_ notification: Notification) 
    
    if let keyboardFrame: NSValue = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue 
        let keyboardRectangle = keyboardFrame.cgRectValue
        let keyboardHeight = keyboardRectangle.height
        tableview.contentInset = UIEdgeInsets(top: tableview.contentInset.top, left: tableview.contentInset.left, bottom: keyboardHeight, right: tableview.contentInset.right)
    

当键盘消失时会调用下面的委托方法,所以我们将底部内容插入设置为零。

func textFieldDidEndEditing(_ textField: UITextField) 
    tableview.contentInset = UIEdgeInsets(top: tableview.contentInset.top, left: tableview.contentInset.left, bottom: 0.0, right: tableview.contentInset.right)

【讨论】:

以上是关于UITableView 增加 contentInset 底部不滚动的主要内容,如果未能解决你的问题,请参考以下文章

尝试在用户向 iOS 中的 UITableView 添加行时动态增加 UITableView 的高度

uitableview中tablefooter的大小没有增加

UITableView indexPath.row 不增加

UITableView 增加 contentInset 底部不滚动

如何在 swift 中增加 ScrollView 中的 UITableView 高度

使用Objective C增加单元格数量时如何动态增加UITableView高度?