Как я могу определить, находится ли список в нижней части прокрутки в Swiftui / iOS 15?

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

NB Сначала пролистываю до конца списка и это нормально

Мой список находится в ScrollViewReader (код ниже):

      struct TestScrollDetectBottomPosition: View {
    @State private var userText: String = ""
    @State private var scrolled: Bool = false
    
    var body: some View {
        VStack {
            ScrollViewReader { reader in
                List {
                    ForEach(0..<20) { i in
                        Text("Item \(i)").padding()
                            .id(i)
                            .onAppear {
                                // First time Scroll
                                if !scrolled {
                                    reader.scrollTo(19, anchor: .bottom)
                                    scrolled = true
                                }
                            }
                    }
                }
                .refreshable {
                    // Do something here
                }
            }
            
            HStack {
                TextField("Enter something here", text: $userText)
                    .padding(.horizontal)
                    .frame(height: 40)
                    .background(Color.primary.opacity(0.06))
                    .clipShape(Capsule())
                Button(action: {
                    // If not at the bottom scroll do this
                    
                    
                }) {
                    Image(systemName: "paperplane.fill")
                        .font(.system(size: 22))
                        .foregroundColor(.white)
                        .frame(width: 40, height: 40)
                        .background(Color(#colorLiteral(red: 0.259467423, green: 0.5342320204, blue: 0.7349982858, alpha: 1)))
                        .clipShape(Circle())
                }
            }
            .padding(10)
        }
    }
}

0 ответов

Другие вопросы по тегам