Одновременное перетаскивание жестов на разных экранах на ipadOS - PullRequest
0 голосов
/ 12 октября 2019

Проблема

Я хотел бы реализовать пользовательский интерфейс для ipadOS, который можно использовать двумя руками. Это означает, что в то время как палец одной руки перетаскивает вид на одну сторону приложения, на другой половине приложения появляется форма с полями ввода, которая изменяется в зависимости от положения ползунка. Пользователь должен иметь возможность использовать ползунки, степперы и списки в форме, пока один палец все еще удерживает ползунок, который заставляет форму отображаться.

Пока обновление одного вида DragGesture обновляется, кажется, что этоблокирование всех других жестов на других видах. С другой стороны, можно одновременно перетаскивать два слайдера.

Вопрос

Какие модификаторы SwiftUI (или UIKit API) можно использовать для достижения жестов перетаскивания на iPad?

Код

Ниже приведен пример кода, который показывает два ползунка, с которыми можно одновременно взаимодействовать по отдельности. Но взаимодействие с образом предотвращает дальнейшее взаимодействие

struct ContentView: View {
    @State var v1: Double = 0.5
    @State var v2: Double = 0.5
    @State var draggedOffset = CGSize.zero

    var body: some View {
        HStack() {
            Image(systemName: "ellipsis.circle.fill")
                .font(Font.system(size: 32))
                .padding(32)
            .offset(self.draggedOffset)
            .gesture(
                DragGesture(minimumDistance: 12.0, coordinateSpace: .global)
                    .onChanged { value in
                        self.draggedOffset = value.translation
                    }
                    .onEnded { value in
                        withAnimation {
                            self.draggedOffset = .zero
                        }
                    }
                )
            VStack() {
                Slider(value: $v1)
                Slider(value: $v2)
            }
                .frame(width: 300, height: nil, alignment: .leading)
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...