Как сделать так, чтобы табличное представление внутри контейнерного представления не отскочило от всплывающей клавиатуры? - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть статический контроллер табличного представления, в котором одна ячейка является контейнерным представлением, которое имеет другое табличное представление, которое является динамическим. Внутренний табличный вид имеет текстовое поле, и при нажатии появляется клавиатура. В главном (внешнем) контроллере табличного представления у меня есть функция ниже, чтобы обновить ограничение на показ клавиатуры.

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
    }
}

Но проблема в том, что на дисплее клавиатуры внутренний вид таблицы переходит на верхнюю часть внутривид контейнера, в то время как сам контроллер основного вида перемещается наверх. Как не дать внутреннему виду таблицы вообще не двигаться? Я отключил прокрутку, отскок для представления таблицы, но это все еще происходит.


Динамическая высота ячейки внешней таблицы установлена ​​на высоту содержимого внутреннего представления таблицы, поэтому прокрутка не требуется.

Смотрите видео

1 Ответ

0 голосов
/ 08 ноября 2019

сделал некоторые изменения в вашем коде

**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
    }
}
...