如何使容器视图内的 table 视图不在键盘弹出时反弹?

How to make table view inside a container view to not bounce on keyboard popup?

我有静态 table 视图控制器,其中一个单元格是一个容器视图,它有另一个 table 动态视图。内部 table 视图有一个文本字段,点击时会弹出键盘。在主(外部)table 视图控制器中,我有以下函数来更新键盘显示的约束。

func updateConstraints() {
    let bottom: CGFloat = 0
    if let popup = self.addItemPopupView {
        self.popupBottomContraints?.isActive = false
        if self.isKeyboardActive {
            self.popupBottomContraints = popup.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor,
                                                                       constant: -self.keyboardHeight+bottom)
        } else {
            self.popupBottomContraints = popup.bottomAnchor.constraint(equalTo: self.toolbar.topAnchor, constant: bottom)
        }
        self.popupBottomContraints?.isActive = true
    }
}

但问题是在键盘显示上,内部 table 视图跳到容器视图内的顶部,而主视图控制器本身移动到顶部。如何防止内部 table 视图完全不动?我已禁用 table 视图的滚动和弹跳,但它仍然发生。


外部 table 单元格的动态高度设置为内部 table 视图的内容高度,因此不需要滚动。

See the video

对您的代码做了一些修改

**replace** self.view.safeAreaLayoutGuide.bottomAnchor **to** self.toolbar.topAnchor. 


func updateConstraints() {
    let bottom: CGFloat = 0
    if let popup = self.addItemPopupView {
        self.popupBottomContraints?.isActive = false
        if self.isKeyboardActive {
            self.popupBottomContraints = popup.bottomAnchor.constraint(equalTo: self.toolbar.topAnchor,
                                                                       constant: -self.keyboardHeight+bottom)
        } else {
            self.popupBottomContraints = popup.bottomAnchor.constraint(equalTo: self.toolbar.topAnchor, constant: bottom)
        }
        self.popupBottomContraints?.isActive = true
    }
}

我通过删除容器视图并直接在主视图控制器中使用 table 视图来修复此问题。