Thanks for being a part of WWDC25!

How did we do? We’d love to know your thoughts on this year’s conference. Take the survey here

SwiftUI/WatchOS - Picker inside a ScrollView does not work as expected

What I am trying to build

Apple Watch app(written in SwiftUI, targeting watchOS 7 or higher, built with Xcode 14.1)

The Problem

Picker placed inside a ScrollView on an apple watch device does not work as expected

I want to find out how to get the Picker to work as expected, stated below.

Expected behavior

On an iOS simulator, a Picker inside a ScrollView works as expected.

  • If I try scroll interaction on the Picker area, the ScrollView part doesn’t get scrolled and only the Picker gets scrolled.

whereas on the watch simulator Example, 



  • If I try to scroll the Picker by touching the Picker area, the whole ScrollView reacts and moves up and down. And I am not able to control the Picker properly.

The code I wrote is as follows:

ScrollView {
    //..other view elements..
    
    Picker(selection: $currentDay) {
        ForEach(weekDays, id: \.self) {
            Text($0)
        }
    } label: {
        Text("")
    }
    .frame(width: 148,height: 50)
    .pickerStyle(.wheel)
    
   //..other view elements..
}//: ScrollView

Things I have tried

  • putting the Picker inside a VStack/ZStack/HStack
  • giving the Picker fixed frame values / giving other elements inside the ScrollView fixed frame values

Hi @james_ma, have you ever solved it? Stuck on the same issue, right now and would be happy about any hint. Also found several GitHub and StackOverflow questions... All not answered.

Came here with the same problem. Any solution? Keen to have a picker in a scroll view but it feels clunky to use.

SwiftUI/WatchOS - Picker inside a ScrollView does not work as expected
 
 
Q