有条件地激活 SwiftUI 中的手势

问题描述 投票:0回答:2

我正在寻找一种方法来启用/禁用 DragGesture 或根据 @State private var isDraggable:Bool 有条件地将手势传递到 swiftUI 中的 MyView()

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

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

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

MyView().gesture(DragGesture(minimumDistance: 0) .onChanged { value in} )
swiftui gesture
2个回答
5
投票

您可以使用

GestureMask
并在手势之间进行选择

您可以拥有 .all、.none、.subviews 或 .gesture

在你的情况下,

.gesture
就是
DragGesture

.subviews
允许在
MyView

内进行任何手势

.all
既是
DragGesture
又是
MyView
内的任何手势(这是默认设置)

import SwiftUI

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

根据您的用例更改

activeGestures
变量


0
投票
MyView().gesture(
    DragGesture(minimumDistance: 0)
        .onChanged { value in},
    isEnabled: isDraggable)
© www.soinside.com 2019 - 2024. All rights reserved.