Swiftui 快捷界面:按下按钮时的操作

Swiftui 快捷界面:按下按钮时的操作,swiftui,Swiftui,我正在尝试实现一个长按按钮,它改变了我只在按下按钮时使用的SF符号。我也不确定我应该在哪里使用这些图像。问题是当I停止按下时,按钮被触发。有没有办法不激活它(按下时除外) 我要找的是一个按钮: 按住2秒后,符号会改变,2秒后,松开后,符号会回到初始状态 struct heartButton: View { @State private var isDetectingPress = false var body: some View { VStack { Image(s

我正在尝试实现一个长按按钮,它改变了我只在按下按钮时使用的SF符号。我也不确定我应该在哪里使用这些图像。问题是当I停止按下时,按钮被触发。有没有办法不激活它(按下时除外)

我要找的是一个按钮:

按住2秒后,符号会改变,2秒后,松开后,符号会回到初始状态

struct heartButton: View {

@State private var isDetectingPress = false

var body: some View {
    VStack {
        Image(systemName: isDetectingPress ? "heart.fill" : "heart").font(.system(size: 16, weight: .regular))
        Button(action: {
            self.isDetectingPress.toggle()
        }) {
            Text("Button")
        }
    }
}

这里有一个解决方案。使用Xcode 11.5b进行测试

struct heartButton: View {

    @GestureState private var isDetectingPress = false

    var body: some View {
        VStack {
            Image(systemName: isDetectingPress ? "heart.fill" : "heart").font(.system(size: 16, weight: .regular))
            Text("Press")
            .gesture(LongPressGesture(minimumDuration: 2).sequenced(before: DragGesture(minimumDistance: 0, coordinateSpace: .local)).updating($isDetectingPress) { value, state, _ in
                    switch value {
                        case .second(true, nil):
                            state = true
                        default:
                            break
                    }
            })
        }
    }
}