iosswiftswiftuiswiftui-listswift-keyboard

SwiftUI: how to detect when List is scrolled?


I have a view with a search bar at the top and a SwiftUI List below. I need to detect when the List is scrolled so I can dismiss the search bar keyboard. How would I call some code when the List is scrolled? Thanks!


Solution

  • I recommend to use simultaneousGesture modifier as in below:

    List {
      // ... your list items
    }
    .simultaneousGesture(DragGesture().onChanged({ _ in
        // if keyboard is opened then hide it
    }))
    

    Update: verified with Xcode 13.3 / iOS 15.4 - for the use-case formulated by PO still works fine.