Eu uso o seletor segmentado no iOS, que contém poucos itens. Quando o usuário toca em um item não selecionado, este item é selecionado. Alguns itens podem conter subitens. Portanto, quando o usuário toca no tipo já selecionado, preciso mostrar a janela modal com subitens para escolher um deles. Mas os toques em itens já selecionados do seletor segmentado não estão funcionando. Tentei usar "pressão longa", mas não funcionou tão bem.
Eu gostaria de usar o design nativo do iOS, por isso não quero usar "botões" em vez do seletor segmentado.
Então a questão é como posso tocar em um item já selecionado do seletor segmentado para mostrar subitens e escolher um deles? Pode ser um “pressionamento longo” ou outra alternativa que seja intuitiva para o usuário.
import SwiftUI
struct CustomSegmentedPicker: View {
@State private var showModalSelectD: Bool = false
enum periods {
case A, B, C, D, All
}
@State var predefinedPeriod: periods = periods.All
@State var predefinedPeriodD: String = "D1"
var body: some View {
ZStack {
Color.clear
.sheet(isPresented: $showModalSelectD, content: {
List {
Picker("D", selection: $predefinedPeriodD) {
Text("D1").tag("D1")
Text("D2").tag("D2")
Text("D3").tag("D3")
}
.pickerStyle(.inline)
}
})
VStack {
HStack {
Picker("Please choose a currency", selection: $predefinedPeriod) {
Text("A").tag(periods.A)
Text("B").tag(periods.B)
Text("C").tag(periods.C)
Text("D (\(predefinedPeriodD))").tag(periods.D)
.contentShape(Rectangle())
.simultaneousGesture(LongPressGesture().onEnded { _ in
print("Got Long Press")
showModalSelectD.toggle()
})
.simultaneousGesture(TapGesture().onEnded{
print("Got Tap")
showModalSelectD.toggle()
})
Text("All").tag(periods.All)
}
.pickerStyle(SegmentedPickerStyle())
}
}
}
}
}