【发布时间】:2021-03-27 05:36:47
【问题描述】:
我有一个 Rec 可以在手势动作中移动它,但问题是手势开始在其框架外捕获手势,我希望它只在框架内工作。这是关于问题的代码和 gif:
gif:
代码:
struct ContentView: View {
@State private var recLocation: CGFloat = CGFloat()
@GestureState private var recTranslation: CGFloat = CGFloat()
var body: some View {
GeometryReader { geometry in
Rectangle().fill(Color.red).frame(width: 50, height: 50, alignment: .center)
.position(x: recLocation + recTranslation + 25, y: geometry.size.height/2)
.gesture( DragGesture()
.updating($recTranslation) { value, state, translation in
state = value.translation.width
}
.onEnded { value in
recLocation = recLocation + value.translation.width
} )
}
}
}
【问题讨论】:
-
我认为 .position() 涵盖了所有可用的容器空间。因为 .gesture() 附加(在之后).position(),这就是最终接收事件的原因。也许您可以尝试将 .gesture() 移到 .position() 之前,看看会发生什么?
标签: swiftui