Ваша клеточная высота динамическая или фиксированная?Если это исправлено, вы можете использовать трюк, подобный тому, как только текстовое поле становится активным, обнаруживает выбранную ячейку с некоторыми delegate
или didSelectItemAt
, затем умножает indexPath.row ячейки со свойством cellHeight, затем устанавливает contentOffset
от collectionView
до этого значения, например:
// cellHeight property is something you should have declared somewhere.
collectionView.setContentOffset(CGPoint(x: 0.0, y: cellHeight * indexPath.row), animated: true)
Если решение, описанное выше, не работает, то программно получите keysHeight или установите значение, которое будет достаточно для прокрутки вверх, например, Iустановит его на 200, затем получим currentOffset, добавим ваше значение к значению y currentOffset в методе didSelectItemAt
(просто для справки):
let currentOffSet = collectionView.contentOffset
let newOffset = CGPoint(x: 0.0, y: currentOffSet.y + 200.0)
collectionView.setContentOffset(newOffset, animated: true)
Это может быть лучшим решением в зависимости от вашего приложения.Но не забудьте установить offSet обратно к исходному значению, возможно, в методе resignFirstResponder
с вашим textField, поэтому при каждом касании ячейки пользователь не будет вести себя странно.