Это решение работает лишь частично — если вы коснетесь экрана во время изменения выделения, оно все равно будет мешать переходу и вызывать странные эффекты. Кроме того, если вы прокручиваете двумя пальцами, жест все равно регистрируется. Мне нужно решение, которое полностью отключает жест смахивания.
Код:
Код: Выделить всё
struct PageViewTest: View {
@State var selection: Int = 1
var body: some View {
ZStack {
Color.green.ignoresSafeArea()
TabView(selection: $selection) {
Color.red
.tag(1)
.gesture(DragGesture())
Color.blue
.tag(2)
.gesture(DragGesture())
Color.yellow
.tag(3)
.gesture(DragGesture())
}
.tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
.animation(.linear, value: selection)
VStack {
Spacer()
Button(action: {
selection = selection == 3 ? 1 : selection + 1
}) {
Text("next")
.foregroundColor(.white)
.font(.title)
}
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/664 ... ui-tabview