Я применил жест longPress к моей ячейке tableview для выбора (из-за такого требования). После того, как я долго нажимаю любую ячейку, и она выбирается, появляется представление снизу, и представление таблицы автоматически прокручивается вверх. Кроме того, когда я снова снимаю выделение выбранной ячейки, табличное представление прокручивается вверх. Любая помощь очень ценится.
func resetSelectedRequests()
{
if arrSelectedIndex.count > 0 {
if arrSelectedIndex.count == filteredRequests?.count {
self.arrSelectedIndex.removeAll()
self.isAllChecked = true
}else {
self.isAllChecked = false
}
if self.actionsViewHeightConstraint.constant == Height.height0.rawValue {
DispatchQueue.main.asyncAfter(deadline: .now() + TimeDelay.decimalTwentyFive.rawValue) {
if arrSelectedIndex.count > 0 {
UIView.animate(withDuration: TimeDelay.decimalOne.rawValue, delay: TimeDelay.zero.rawValue, options: UIViewAnimationOptions.curveEaseIn, animations: {
self.actionsViewHeightConstraint.constant = Height.height60.rawValue
}, completion: nil)
}
}
}
tblViewApproveRequest.reloadData()
tblViewApproveRequest.layoutIfNeeded()
}else {
deselectAllRequests()
}
}
@Kuldeep Пожалуйста, найдите код в отредактированной версии вопроса.
что делает этот actionsViewHeightConstraint?
@ReinierMelian - это просто представление, которое должно отображаться после выбора ячейки и имеет несколько кнопок для пользователей.
но на ваш фрейм tableView влияет изменение ограничения этого представления?
вот почему я использовал эти строки: tblViewApproveRequest.layoutIfNeeded()
вам нужно сохранить текущий contentOffset перед изменением и прокрутить представление таблицы в ту же точку после reloadData или выполнить reloadData без анимации, попробуйте поместить свои reloadData и layoutIfNeeded внутри этого блока UIView.performWithoutAnimation {(your code here)} попробуйте это, прежде чем углубляться
Сообщите мне, если решит вашу проблему
Обязательно ли перезагружать tableView целиком?
@ReinierMelian Пробовали, но безуспешно !!!
вы можете поделиться видео или чем-нибудь, чтобы увидеть неправильное поведение?
@iPeter да, так как у меня есть несколько кнопок в моей ячейке, расположение которых должно быть изменено при выборе / отмене выбора ячейки
Почему бы вам не перезагрузить только ячейку, перезагрузка tableView изменяет ее contentOffset, а перезагрузка конкретной ячейки - нет. Пожалуйста, попробуйте.
Позвольте мне пояснить. В соответствии с моей потребностью, когда я долго нажимаю на ячейку, эта ячейка выбирается, а все остальные ячейки затем включаются для вызова didSelect Delegate, а также после длительного нажатия ячейки мне нужно показать флажки на всех других ячейках, чтобы их выбрать либо на didSelect или нажмите и удерживайте оба. Надеюсь, теперь это проясняет мою проблему. :(





Было бы здорово, если бы вы добавили код LongPressGesture.