在 SwiftUI 中使用 Drag Gesture() 时如何知道是向下还是向上拖动?

How to know if draged down or up while using DragGesture() in SwiftUI?

我在我的 SwiftUI 代码中使用 DragGesture() ..它工作正常..但是对于一个逻辑我想知道它是向下拖动还是向上拖动,有什么方法可以检测到这个吗?

    let drag = DragGesture()
        .onChanged { value in

            //some logic

        }
        .onEnded { value in
            // some logic 
            expand.toggle()
        }

一种可能的方法是使用额外的状态 属性 来存储 value.location.y坐标和更新依赖状态比较 以前存储和当前收到拖 value:

测试 Xcode 13.3 / iOS 15.4

这是主要部分:

.gesture(DragGesture()
    .onChanged { value in
        let newValue = value.location.y   // fetch prev !!
        if let prev = self.current {
            self.isUp = prev > newValue   // << here !!
        }
        self.current = newValue   // store curr !!
        self.offsetY = value.translation.height
    }

完成findings and code is here