如何检测EdgePan手势SwiftUI
我试着在SwiftUI中从左边认出一个EdgePan。我知道有一些手势,但还不能应用到整个屏幕上。(与德拉格斯特尔一起试用)。 是否可以在SwiftUI中实现EdgePan?如何检测EdgePan手势SwiftUI,swift,gesture,swiftui,Swift,Gesture,Swiftui,我试着在SwiftUI中从左边认出一个EdgePan。我知道有一些手势,但还不能应用到整个屏幕上。(与德拉格斯特尔一起试用)。 是否可以在SwiftUI中实现EdgePan? 或者我如何使用Dragesture来做同样的事情?是的,这可以通过Dragesture来实现 DragGesture有一个startLocation属性,它是一个CGPoint。由此,您可以检测手势的起始位置,并使用此方法确定手势是否从边缘开始 使用现有的DragGesture,并在.onChanged闭包中,传入手势,然
或者我如何使用Dragesture来做同样的事情?是的,这可以通过
Dragesture来实现
DragGesture
有一个startLocation
属性,它是一个CGPoint
。由此,您可以检测手势的起始位置,并使用此方法确定手势是否从边缘开始
使用现有的DragGesture
,并在.onChanged
闭包中,传入手势
,然后使用手势.startLocation
找到起始位置。由于要检测边缘,因此需要手势.startLocation
的x
属性
看起来是这样的:
DragGesture()
.onChanged({gesture in
if gesture.startLocation.x < CGFloat(100.0){
print("edge pan")
}
}
)
DragGesture()
.onChanged({手势在
如果手势.startLocation.x
哦,我忘记了帖子:是的,我也做了同样的事情,但是使用了。oneded
很好,唯一的问题是它没有考虑方向本身。假设你在左边的边上挥舞,这会被认为是一个边盘,但是我们需要水平运动。我用这个代码包装了打印,确保角度是+45*或-45*,这对我来说足够接近水平。。。如果斜率<1{print(“edge pan”)},则设slope=abs((signature.startLocation.y-signature.location.y)/(signature.startLocation.x-signature.location.x))