SwiftUI перетаскивание жестов - PullRequest
0 голосов
/ 07 апреля 2020

Swift 5, iOS 13.x

Я получил это супер простое приложение, которое позволяет мне перетаскивать вид с помощью смещения с помощью SwiftUI, а когда оно останавливается, я сбрасываю смещение и положение. Работает хорошо в первый раз, но каждый раз, когда я go возвращаюсь, чтобы снова его перетащить, он прыгает, когда я отпускаю кнопку. Как я могу это исправить ... Я нашел что-то, что упомянул вставки? Это связано со вставками?

Теперь я знаю, что это отвечает на вопрос с помощью другого кода kontiki , но я хочу понять, что не так с моим решением.

struct ContentView: View {
  @State var dragOffset = CGSize.zero
  @State var position:CGPoint = CGPoint(x:0,y:0)

  var body: some View {
    VStack {
      Circle()
      .frame(width: 12, height: 128, alignment: .center)
    }.offset(x: self.dragOffset.width, y: self.dragOffset.height)
    .gesture(DragGesture(coordinateSpace: .global)
    .onChanged({ ( value ) in
      self.dragOffset = CGSize(width: value.translation.width, height: value.translation.height)
    })
    .onEnded { ( value ) in
      self.dragOffset = .zero
      self.position = value.location
    }
).position(position)
}
}

1 Ответ

1 голос
/ 07 апреля 2020

В моей интуиции сказано, что вы, вероятно, имеете дело с проблемой, связанной с SafeArea EdgeInsets. Сложно сказать. Если вам интересно, я сделал два видео о жесте перетаскивания и жесте касания, чтобы создавать виды при касании и перетаскивать их, если вы касаетесь ранее созданного представления:

https://www.youtube.com/watch?v=x3mzLhPfLaE&list=PLEHYNiA7SPcP9zzQYHAN1T27w4cwG_f5i

https://www.youtube.com/watch?v=V0F5ZuJgzoY&list=PLEHYNiA7SPcP9zzQYHAN1T27w4cwG_f5i&index=2

...