Ортогональный раздел UICollectionViewCompositionalLayout willDisplayCell аналитика
Я использую композиционный макет представления коллекции, и мне нужна точная аналитика для событий userViewedCell для секций с ортогональной прокруткой. Я использовал collectionView(willDisplay:forItemAt), чтобы определять, когда ячейка должна быть показана, но это кажется очень глючным.
Чтобы продемонстрировать проблему, вот пример проекта Apple для композиционного макета представления коллекции: https://developer.apple.com/documentation/uikit/views_and_controls/collection_views/using_collection_view_compositional_layouts_and_diffable_data_sources
Единственное изменение, которое я внес в код Apple, - это добавление этой функции:
func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
print("will display cell at \(indexPath)")
}
Когда я прокручиваю одну ортогональную секцию, willDisplayCell также вызывается для ячеек в других ортогональных секциях. Например, я прокручиваю раздел 0 до ячейки 10, и willDisplayCell вызывается для [0, 10], [1, 10] и [2, 10], хотя в разделах 1 и 2 показаны только первые несколько ячеек.
Связанная с этим проблема заключается в том, что когда я прокручиваю раздел 0 до самого начала, willDisplayCell никогда не вызывается для [0, 0], [0, 1] или [0, 2].
Как это исправить, чтобы получать точную аналитику? Или есть другой метод, который я должен использовать вместо этого?