Как определить, перетаскивается ли NSWindow? - PullRequest
0 голосов
/ 13 апреля 2020

Я использую SwiftUI. У меня есть представление под названием SideBar, которое состоит из VStack и кнопок внутри него.

Я попытался прикрепить некоторые жесты, такие как DragGesture() и TapGesture() onended к VStack, надеясь, что он обнаружит, когда пользователь перетаскивает представление, но это не всегда работает, и я также считаю, что это супер-хаки sh.

Кто-нибудь сможет помочь? Большое спасибо.

Код:

VStack{blabla}

 .frame(width: 40, height: 320)

 .contentShape(Rectangle())

 .gesture(
   TapGesture().onEnded{_ in
     print("end click")
    }
  )

 .gesture(
   DragGesture().onEnded{_ in
    print("end drag")
   }
  )

1 Ответ

0 голосов
/ 13 апреля 2020

Достаточно просто DragGesture().onChanged(_:).
Вы можете получить обновленные значения перетаскивания, которые вы можете решить, как использовать.

В следующем примере, когда перетаскивается VStack, захваченный значения повторно отображает пользовательский интерфейс, где он будет использоваться для определения position из VStack.

Пример:

struct ContentView: View {
    @State var position = CGPoint(x: 100, y: 100)

    var body: some View {
        VStack {
            Text("Hello, World")
        }
        .background(Color.gray)
        .position(position)
        .gesture(DragGesture()
        .onChanged { (value) in
            self.position = CGPoint(x: value.location.x,
                                    y: value.location.y)
        })
    }
}
...