我正在使用 SwiftUI。我有一个名为 SideBar 的 View ,它由 VStack 和其中的按钮组成。
我尝试在 VStack 上附加一些手势,例如 DragGesture()
和 TapGesture()
onending
,希望它能检测到何时用户拖动 View ,但这并不总是有效,我也认为这是 super 黑客行为。
有人可以帮忙吗?非常感谢。
代码:
VStack{blabla}
.frame(width: 40, height: 320)
.contentShape(Rectangle())
.gesture(
TapGesture().onEnded{_ in
print("end click")
}
)
.gesture(
DragGesture().onEnded{_ in
print("end drag")
}
)
最佳答案
只需 DragGesture().onChanged(_:)
就足够了。
您可以获得更新的阻力值,您可以决定如何使用。
在以下示例中,当拖动 VStack
时,捕获的值将重新渲染 UI,其中将使用该值确定 的
.位置
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)
})
}
}
关于swift - 如何检测NSWindow是否被拖动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61186633/