在 SwiftUI 中有条件地激活手势

Conditionnaly activate Gesture in SwiftUI

我正在寻找一种方法来 able/disable DragGesture 或根据 @State private var isDraggable:Bool

在 swiftUI 中有条件地将 Gesture 传递给 MyView()

由于 MyView() 有一些参数在 Appear() 和 Disappear() 上被重置,我不能只做

If isDraggable { MyView() }else{MyView().gesture() }

DragGesture 在我的代码中是如何实现的

MyView().gesture(DragGesture(minimumDistance: 0) .onChanged { value in} )

您可以使用GestureMask并在手势之间进行选择

您可以使用 .all、.none、.subviews 或 .gesture

.gesture 在你的例子中是 DragGesture.

.subviews 将允许 MyView

内的任何手势

.allDragGestureMyView 内的任何手势(这是默认值)

import SwiftUI

struct ConditionalGestureView: View {
    @State var activeGestures: GestureMask = .subviews
    var body: some View {
        MyView()
            .gesture(DragGesture(), including: activeGestures)
    }
}

根据您的用例更改 activeGestures 变量