Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检测EdgePan手势SwiftUI_Swift_Gesture_Swiftui - Fatal编程技术网

如何检测EdgePan手势SwiftUI

如何检测EdgePan手势SwiftUI,swift,gesture,swiftui,Swift,Gesture,Swiftui,我试着在SwiftUI中从左边认出一个EdgePan。我知道有一些手势,但还不能应用到整个屏幕上。(与德拉格斯特尔一起试用)。 是否可以在SwiftUI中实现EdgePan? 或者我如何使用Dragesture来做同样的事情?是的,这可以通过Dragesture来实现 DragGesture有一个startLocation属性,它是一个CGPoint。由此,您可以检测手势的起始位置,并使用此方法确定手势是否从边缘开始 使用现有的DragGesture,并在.onChanged闭包中,传入手势,然

我试着在SwiftUI中从左边认出一个EdgePan。我知道有一些手势,但还不能应用到整个屏幕上。(与德拉格斯特尔一起试用)。 是否可以在SwiftUI中实现EdgePan?
或者我如何使用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))