Focus State and Pickers in WatchOS

since the last version of iOS and WatchOS I have a problem with this code. This is the minimal version of the code, it have two pickers inside a view of a WatchOS App. The problem its with the focus, I can't change the focus from the first picker to the second one. As I said before, it was working perfectly in WatchOS 10.0 but in 11 the problems started.

struct ContentView: View {
    @State var selection: Int = 1

    var body: some View {
            TabView(selection: $selection) {
                Text("VIEW-ONE").tag(1)
                ParentView().tag(2)
        }.tabViewStyle(.verticalPage)  // <---- THIS LINE
    }
}

struct ParentView: View {
    @FocusState private var focusedField: String?

    var body: some View {
        VStack {
            ChildView1(focusedField: $focusedField)
            ChildView2(focusedField: $focusedField)
        }
    }
}

struct ChildView1: View {
    @FocusState.Binding var focusedField: String?
    @State private var selectedValue: Int = 0

    var body: some View {
        Picker("First Picker", selection: $selectedValue) {
            ForEach(0..<5) { index in
                Text("Option \(index)").tag("child\(index)")
            }
        }.pickerStyle(WheelPickerStyle()).focused($focusedField, equals: "first")
    }
}

struct ChildView2: View {
    @FocusState.Binding var focusedField: String?
    @State private var selectedValue: Int = 0

    var body: some View {
        Picker("Second Picker", selection: $selectedValue) {
            ForEach(0..<5) { index in
                Text("Option \(index)").tag("childTwo\(index)")
            }
        }.pickerStyle(WheelPickerStyle()).focused($focusedField, equals: "second")
    }
}

When you do vertical scrolling on the second picker, the focus should be on it, but it dosnt anything. I try even do manually, setting the focusState to the second one, but it sets itself to nil. I hope that you can help me, thanks!

The problem its when you enabled the .vertical pagination,

But in the previous WATCHOS version it was working like that.

Showing the behaviour

Edit: Confirmed by apple DTS its a side system BUG, so it will be fixed in further versions

Upvotes: 0

Views: 46

Answers (0)

Related Questions