Как сохранить в @State статус, если LongPressGesture был использован - PullRequest
0 голосов
/ 16 апреля 2020
@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 Ответ

1 голос
/ 16 апреля 2020

Используйте только .onEnded, он вызывается, когда действительно долго нажатие обнаружено

var longPress: some Gesture {
    LongPressGesture(minimumDuration: 2)
        .onEnded { _ in 
            self.longPressUsed = true
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...