ASCollectionView icon indicating copy to clipboard operation
ASCollectionView copied to clipboard

scrollPositionSetter is not working

Open leogiroux opened this issue 4 years ago • 2 comments

Hi,

Nothing is happening when I set the scroll position in my example, am I doing something wrong ?

    @State var asCollectionViewScrollPosition: ASCollectionViewScrollPosition? = ASCollectionViewScrollPosition.top

           ASCollectionView(sections: self.sections)
                .layout { sectionID in
                    if sectionID != "header" {
                        return self.getCategoryLayout()
                    } else if sectionID == "header" {
                        return self.getDefaultLayout(estimatedHeight: 130)
                    } else {
                        return self.getDefaultLayout()
                    }
                }
                .onScroll({ point, size in
                    print("point \(point.y)")
                    if point.y > 100  {
                        withAnimation(.spring()) { isTopBarVisible = true }
                    } else {
                        withAnimation(.spring()) { isTopBarVisible = false }
                    }
                })
                .scrollPositionSetter($asCollectionViewScrollPosition)
                .contentInsets(.init(top: 10, left: 0, bottom: 10, right: 0))
                .hideNavBar()

            Button {
                print("search button clicked")
                withAnimation {
                    asCollectionViewScrollPosition = ASCollectionViewScrollPosition.indexPath(IndexPath(row: 0, section: 0), positionOnScreen: .top, extraOffset: CGPoint(x: 0, y: 0))
                }
            } label: {
                Image(systemName: "magnifyingglass")
                    .resizable()
                    .foregroundColor(.white)
                    .frame(width: 24, height: 24, alignment: .topTrailing)
                    .padding()
            }

leogiroux avatar Sep 10 '21 10:09 leogiroux

I'm experiencing the same

kevindropwithus avatar Sep 16 '21 01:09 kevindropwithus

I was experiencing this issue as well, but I have seemed to find a fix, what I did was added this to the updateUIViewController method in ASTableView file:

    context.coordinator.applyScrollPosition(animated: true)

This way, when the binding gets updated, the updateUIViewController method is triggered, and this forces the coordinator the apply the new scroll position. Hope this helps!

P.S. The same should also work by adding this line to the updateUIViewController method in the ASCollectionView file

r3pps avatar Nov 10 '21 07:11 r3pps