如何检测EdgePan手势SwiftUI

7

我正在尝试在SwiftUI中识别从左侧进行的EdgePan手势。我知道有一些手势,但还没有能够将它们应用于整个屏幕(尝试使用DragGesture)。 在SwiftUI中实现EdgePan手势是否可行? 或者如何使用DragGesture来完成相同的操作?

1个回答

13

是的,使用DragGesture可以实现这个功能。

DragGesture拥有一个startLocation属性,它是一个CGPoint。通过这个属性,你可以检测手势开始的位置,并且根据此确定它是否从屏幕边缘开始。

使用现有的DragGesture,在.onChanged闭包中传入gesture,并使用gesture.startLocation查找开始的位置。由于你想要检测屏幕边缘,所以需要使用gesture.startLocationx属性。

代码如下:

DragGesture()
    .onChanged({gesture in
        if gesture.startLocation.x < CGFloat(100.0){
            print("edge pan")
        }
     }
)

哦,我忘记发帖了:D 是的,我也做了同样的事情,但是使用了.onEnded - nOk
4
表现很好,唯一的问题是它没有考虑方向本身。 比如你在左边界并向上滑动,这会被视为边缘滑动,但我们需要水平移动。 我将打印语句包装在这段代码中,确保角度为+45或-45,这对我来说足够接近水平方向了... 让斜率 = 绝对值((手势起始位置.y - 手势位置.y)/(手势起始位置.x - 手势位置.x)) 如果斜率小于1,则 打印("边缘滑动") - Muvimotv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接