如何使容器视图内的 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 视图的内容高度,因此不需要滚动。
对您的代码做了一些修改
**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 视图来修复此问题。
我有静态 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 视图的内容高度,因此不需要滚动。
对您的代码做了一些修改
**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 视图来修复此问题。