如果已使用LongPressGesture,如何在状态中存储状态

时间:2020-04-16 01:57:21

标签: ios swift swiftui

@State var longPressUsed = false

var body: some View {
    var longPress: some Gesture {
        LongPressGesture(minimumDuration: 2)
            .updating($revealTip) { currentstate, gestureState, transaction in
                (1) self.longPressUsed = true
            }
            .onEnded(finished in 
                (2) self.longPressUsed = true
            }
    }

}

如何记录长按用法(不包括重复使用)?将其放在(1)中会导致警告,即在更改视图时不应触摸状态变量。当放置在(2)中时,代码并不总是被调用。

1 个答案:

答案 0 :(得分:1)

仅使用 .onEnded,当检测到真正按下时调用它

var longPress: some Gesture {
    LongPressGesture(minimumDuration: 2)
        .onEnded { _ in 
            self.longPressUsed = true
        }
}